aulas testes LINQ to SQL
-
22-08-2019 - |
Pergunta
Como faço para teste de unidade meu código que tem LTS Datacontext. Recebo erro durante o teste, eu tenho um monte de DataContexts e adicionar manualmente a string de conexão é uma dor, todas as sugestões.
Solução
Bem, a maneira que eu faço é a seguinte:
A minha informação camada tem uma interface, tal como se segue:
public class MyDataLayer : iMyDataLayer
{
public string GetMyData(parameters)
{
return myQueryValue;
}
}
public interface iMyDataLayer
{
public string GetMyData(parameters);
}
Agora, no meu construtor para o meu principal base de código (lógica de negócio) I terá um parâmetro para passar na interface para a camada de dados:
private iMyDataLayer DataLayer;
public class MyBusinessLogic(iMyDataLayer dataLayer)
{
DataLayer = dayaLayer
}
public string GetMyData(parameters)
{
return DataLayer.GetMyData(parameters)
}
Com isso, agora posso criar um "fake" serviço de dados no meu projeto TDD:
public class FakeDataLayer : iMyDataLayer
{
public string GetMyData(parameters)
{
return "Some Default Value or Object";
}
}
Agora, quando eu executar o meu teste, agora eu posso passar na minha falso objeto da camada de dados para a minha lógica de negócios, a partir daqui ele irá invocar a lógica falso e voltar resultado padrão.
Agora, concedido você não vai estar trabalhando com dados reais aqui. No entanto, se você configurar falso objetos com dados válidos / inválidos reais, você pode testar a sua lógica de negócios desta forma, sem ter que se conectar a um banco de dados.
Espero que isso ajude. Deixe-me saber se você precisar de esclarecimentos sobre qualquer coisa.