Sistema de arquivos zombeteiro
-
20-09-2019 - |
Pergunta
Se meus testes de unidade dependem do sistema de arquivos e eu preciso zombar disso, qual é a melhor maneira de fazer isso?
Obrigado
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.
este Necessário: Interfaces do sistema de arquivos e implementação no .net pode ser útil
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.