Estou tentando aprender a implementar o TDD com objetos falsos / zombeteiros. Uma das perguntas que tenho é como inicializar uma dependência em um aplicativo que implementa TDD? Um exemplo deste artigo Iniciando a zombaria com o Moq 3 mostra:
public class OrderWriter
{
private readonly IFileWriter fileWriter;
public OrderWriter(IFileWriter fileWriter)
{
this.fileWriter = fileWriter;
}
public void WriteOrder(Order order)
{
fileWriter.WriteLine(String.Format("{0},{1}", order.OrderId, order.OrderTotal));
}
}
Neste exemplo, o construtor aceita um IFileWriter
parâmetro, suponho, porque você deseja fornecer o gravador de arquivo real no caso do aplicativo real e o falso para o teste de unidade. Minha pergunta é, na aplicação real, quem fornecerá esse parâmetro? Suponho que será o chamador desta aplicação. E se também tiver dependência no construtor? O código do chamador também será responsável por isso?
Talvez a melhor maneira seja usar a fábrica. Como esta fábrica funcionaria? E como a fábrica será distribuída? Será no parâmetro construtor como na maneira acima?