Pergunta

Se meus testes de unidade dependem do sistema de arquivos e eu preciso zombar disso, qual é a melhor maneira de fazer isso?

Obrigado

Foi útil?

Solução

Você basicamente tem duas opções: resumo Eiter toda a lógica relacionada ao sistema de arquivos por trás de um IFileSystemService, ou uso Stubs da Microsoft, que é

... uma estrutura leve para .NET que fornece stubs de teste. Para interfaces e classes não seladas, são gerados invólucros seguros de tipo que podem ser facilmente personalizados pela anexação de delegados.

Outras dicas

O sistema de arquivos é um excelente exemplo de como o TDD pode levá -lo a um design melhor e mais flexível. Freqüentemente, quando você interage com o sistema de arquivos, você pode lidar com os arquivos de leitura e gravação usando Fluxos ou Textwriters em vez de arquivos reais.

Todos esses são tipos abstratos e, portanto, são fáceis de zombar.

Agora você tem uma API mais flexível porque não está bem acoplada ao sistema de arquivos, mas ainda suporta operações de arquivo.

Isenção de responsabilidade eu trabalho na TypeMock.

Fico feliz em dizer que nossas últimas versões suportam os seguintes tipos de System.io a serem ridicularizados:

  • Arquivo
  • Diretório
  • FILESTREAM

Há um pequeno exemplo:

public void Test()
{
    string path = @"C:\TypemockCan.txt";

    Isolate.WhenCalled(() => File.Exists(null)).WillReturn(true);

    Assert.IsTrue(File.Exists(path));
}

Ver mais exemplos.

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