Sto cercando di imparare a implementare TDD con oggetti finti / falsi. Una delle domande che ho è come inizializzare una dipendenza in un'applicazione che implementa TDD? Un esempio tratto da questo articolo Beginning Mocking With 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));
}
}
In questo esempio, il costruttore prende un parametro IFileWriter
, suppongo perché vuoi fornire il vero file writer nel caso dell'applicazione reale e quello falso per il test unitario. La mia domanda è, nella vera applicazione, chi fornirà questo parametro? Suppongo che sarà il chiamante di questa applicazione. Cosa succede se ha dipendenza anche nel costruttore? Il codice del chiamante sarà responsabile anche per questo?
Forse il modo migliore è usare la fabbrica. Come funzionerebbe questa fabbrica? E come sarà distribuita la fabbrica? Sarà nel parametro costruttore come nel modo sopra?