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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top