A biblioteca de zombaria mais popular e amigável para .NET
var mock = new Mock <ilovethislibrary> (); // UAU! Sem gravação/reprodução de estranheza?! :) zock.setup (biblioteca => biblioteca.downloadexists ("2.0.0.0")) .returns (true); // Use a propriedade do objeto na simulação para obter uma referência ao objeto // implementando ilovethislibrary e depois exercite -a ligando // métodos nele Ilovethislibrary adorável = zock.Object; BOOL Download = adorável.DownLoadexists ("2.0.0.0"); // Verifique se o método fornecido foi realmente chamado com o valor esperado no máximo Mock.Verify (Library => Library.DownLoadexists ("2.0.0.0"), times.atroMonce ());
O MOQ também é a primeira e única biblioteca até agora a fornecer LINQ às zombarias, para que o mesmo comportamento acima possa ser alcançado de maneira muito mais sucinta:
Ilovethislibrary amable = zock.of <ilovethislibrary> (l => l.downloadexists ("2.0.0.0") == true); // Exercício A instância retornada por Mock.Of chamando métodos nela ... BOOL Download = adorável.DownLoadexists ("2.0.0.0"); // simplesmente afirma o estado retornado: Assert.True (download); // se você quiser ir além dos testes estaduais e quiser // Verifique a interação simulada em vez disso ... Mock.get (adorável) .verify (biblioteca => biblioteca.downloadexists ("2.0.0.0"));
Você pode pensar no LINQ para zombar como "do universo de zombarias, me dê um cujo comportamento corresponde a essa expressão".
Confira o QuickStart para obter mais exemplos!
MOQ (pronunciado "Mock-you" ou apenas "Mock") é a única biblioteca zombeteira do .NET desenvolvido do zero para aproveitar ao máximo as árvores de expressão .NET LINQ e expressões lambda, o que o torna as mais produtivas, seguras e seguras e Biblioteca de zombaria amigável para refatorar. E suporta interfaces zombeteiras e classes. Sua API é extremamente simples e direta e não requer conhecimento ou experiência prévia com conceitos de zombaria.
A biblioteca foi criada principalmente para desenvolvedores que atualmente não estão usando nenhuma biblioteca de zombaria (ou estão descontentes com as complexidades de alguma outra implementação) e que normalmente estão escrevendo manualmente suas próprias zombarias (com mais ou menos "fantasia"). A maioria dos desenvolvedores dessa situação também é bastante pragmática e adere ao estado (ou clássico) do TDD. É o resultado do sentimento de que a barreira de entrada de outras bibliotecas de zombaria é um pouco alta, e é possível uma abordagem mais simples, mais leve e elegante. O MOQ alcança tudo isso, aproveitando ao máximo os recursos elegantes e compactos da linguagem C# e VB conhecidos coletivamente como LINQ (eles não são apenas para consultas, como implica o acrônimo).
O MOQ foi projetado para ser uma maneira muito prática, discreta e direta de configurar rapidamente dependências para seus testes. Seu design de API ajuda até os usuários iniciantes a cair no "poço do sucesso" e evitar usos/abusos mais comuns de zombaria.
Quando foi concebido, foi a única biblioteca zombeteira que foi contra a abordagem generalizada e um tanto inintiva (especialmente para iniciantes) de todas as outras bibliotecas (e isso pode ter sido uma coisa boa;)).
Não usar o registro/reprodução também significa que é simples mover expectativas comuns para um método de configuração de fixação e até substituir essas expectativas quando necessário em um teste de unidade específico.
Você pode ler mais sobre o "Why Why" e ver algumas capturas de tela agradáveis no blog da KZU.
Veja nossos exemplos de Investir Quick para ter a sensação da API extremamente simples e instalar da NUGET.
Leia sobre o anúncio no blog da KZU. Obtenha alguns antecedentes sobre o estado das bibliotecas simuladas de Scott Hanselman.
O MOQ foi originalmente desenvolvido por Clarius, Manas e Inspedd.
O MOQ usa o Castle DynamicProxy internamente como mecanismo de interceptação para permitir zombaria.
O MOQ oferece os seguintes recursos:
Forte: sem cordas para expectativas, sem valores de retorno ou restrições de retorno objeto
Integração insuperável vs Intellisense: tudo suporta pleno versus intellisense, desde as expectativas, especifiquem os argumentos de chamadas de método, valores de retorno, etc.
Nenhum recorde/reprodução de idiomas para aprender. Basta construir sua simulação, configurá-lo, usá-lo e opcionalmente verificar chamadas para ele (você não pode verificar zombares quando elas agem apenas como stubs ou quando você está fazendo testes mais clássicos baseados no estado, verificando valores retornados do objeto em teste )
Curva de aprendizado muito baixa como conseqüência dos três pontos anteriores. Na maioria das vezes, você nem precisa ler a documentação.
Controle granular sobre o comportamento simulado com uma simples enumeração de makbehavior (não há necessidade de aprender qual é a diferença teórica entre uma simulação, um stub, uma falsa, uma simulação dinâmica, etc.)
Zombar de interfaces e classes
Substituir as expectativas: pode definir as expectativas padrão em uma configuração de equipamento e substituir conforme necessário nos testes
Passar argumentos construtores para classes ridicularizadas
Interceptar e aumentar os eventos em zombarias
Suporte intuitivo para argumentos out/ref
Agradecemos profundamente qualquer feedback que você possa ter! Sinta -se à vontade para participar do bate -papo ou relatar um problema no rastreador de edições.
Saiba mais sobre os patrocinadores do GitHub