Como são as pessoas o teste de unidade de código que usa o Linq to SQL
-
09-06-2019 - |
Pergunta
Como são as pessoas o teste de unidade de código que usa o Linq to SQL?
Solução
Atualização:
Fredrik tem de colocar uma solução de exemplo sobre como fazer o teste de unidade linq2sql aplicações mais em seu blog.Você pode baixá-lo em:
Não só eu acho ótimo que ele postou uma solução de exemplo, ele também conseguiu extrair interfaces para todas as classes, o que torna o design mais dissociado.
Meu post antigo:
*Eu achei esses blogs que eu acho que são um bom começo para fazer o DataContext wrapper:Link1 Link2
Eles cobrem quase o mesmo assunto, exceto que o primeiro implementa significa para a extração de interfaces para as tabelas bem.O segundo é mais abrangente, embora, por isso eu incluí-lo bem.*
Outras dicas
3 anos de atraso, mas isso é como eu faço:
https://github.com/lukesampson/LinqToSQL-test-extensions/
Não há necessidade de escrever um wrapper ou fazer um monte de encanamento, basta soltar o modelo T4 junto ao seu .dbml e você terá:
- Uma interface para o seu contexto de dados e.g.IExampleDataContext
- Em memória de simulação para o seu contexto de dados e.g.MemoryExampleDataContext
Tanto utilizará automaticamente os mapeamentos já configurado em seu DBML.
Assim, você pode fazer coisas como
public class ProductRepo {
IExampleDataContext DB { get; set };
public ProductRepo(IExampleDataContext db) {
DB = db;
}
public List<Product> GetProducts() {
return DB.Products.ToList();
}
}
e você pode chamar que, com o
new ProductRepo(new MemoryExampleDataContext()).GetProducts(); // for testing
ou
new ProductRepo(new ExampleDataContext()).GetProducts(); // use the real DB
Enrole o DataContext, zombar do wrapper.Sua a maneira mais rápida de fazê-lo, tho requer codificação para o teste, o que algumas pessoas pensam, os cheiros.Mas, às vezes, quando você tem dependências que não pode ser (facilmente) escarnecido, é a única maneira.
Linq torna o teste muito mais fácil.Consultas Linq funcionam tão bem em Listas como o Linq para sql coisas.Você pode trocar o Linq to SQL para a lista de objetos de teste e de que maneira.
Mattwar sobre a O Rebelde De Log Da Web tinha um ótimo artigo sobre como mock-up de uma extensible Linq2Sql contexto de dados.Confira -- ZOMBA DE NIX - EXTENSÍVEL, LINQ TO SQL DATACONTEXT
Normalmente, você não precisa testar a parte do código que usa o LINQ to SQL, mas se você realmente quiser, você pode usar os mesmos conjuntos de dados que você está consultando contra o servidor e transformá-los em objetos na memória e executar as consultas LINQ (que usaria a Enumerável métodos em vez de Consultáveis).
Outra opção é usar o Matt Warren mockable versão do DataContext.
Você também pode obter as instruções de SQL que o LINQ to SQL usa fazendo-o através do depurador (a partir do IQueryable objeto), verifique as manualmente e, em seguida, incluí-los em testes automatizados.
O LINQ to SQL é realmente muito bom para o teste de unidade, como ele tem a capacidade de criar bancos de dados sobre a voar a partir do que é definido no seu DBML.
Torna-se muito bom para testar um ORM camada de criar o DB através do DataContext e tê-lo vazio para começar.
Eu cobri-lo no meu blog aqui: http://web.archive.org/web/20090526231317/http://www.aaron-powell.com/blog/may-2008/unit-testing-linq-to-sql.aspx