Tôi đang cố gắng học cách thực hiện TDD với các đối tượng giả / giả. Một trong những câu hỏi tôi có là làm thế nào để khởi tạo một phụ thuộc trong một ứng dụng thực hiện TDD? Một ví dụ từ bài viết này Bắt đầu Mocking With Moq 3 cho thấy:
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));
}
}
Trong ví dụ này, hàm tạo lấy một IFileWriter
tham số, tôi cho rằng vì bạn muốn cung cấp trình ghi tệp thực trong trường hợp ứng dụng thực tế và giả mạo để kiểm tra đơn vị. Câu hỏi của tôi là, trong ứng dụng thực, ai sẽ cung cấp thông số này? Tôi cho rằng nó sẽ là người gọi của ứng dụng này. Điều gì nếu nó có sự phụ thuộc cũng như trong các nhà xây dựng? Mã người gọi cũng sẽ chịu trách nhiệm cho điều đó?
Có lẽ cách tốt hơn là sử dụng nhà máy. Nhà máy này sẽ hoạt động như thế nào? Và nhà máy sẽ được phân phối như thế nào? Nó sẽ nằm trong tham số constructor như cách trên?