Hiện tại tôi đang đọc một cuốn sách (Pro ASP.Net Framework).Tại sao lại sử dụng khung mocking thay vì xoay vòng tay của chúng tôi?
Trong cuốn sách này, tác giả đề nghị sử dụng một số Moq framework để trợ giúp thực hiện TDD.
[Test]
public void List_Presents_Correct_Page_Of_Products()
{
IProductsRepository repository = MockProductsRepository(
new Product { Name = "P1" }, new Product { Name = "P2" },
new Product { Name = "P3" }, new Product { Name = "P4" },
new Product { Name = "P5" }
);
ProductsController controller = new ProductsController(repository);
...
}
static IProductsRepository MockProductsRepository(params Product[] prods)
{
// Generate an implementor of IProductsRepository at runtime using Moq
var mockProductsRepos = new Moq.Mock<IProductsRepository>();
mockProductsRepos.Setup(x => x.Products).Returns(prods.AsQueryable());
return mockProductsRepos.Object;
}
Trong lớp mô hình, chúng tôi đã xác định FakeRepository và SqlRepository.
Thực tế là tôi không thấy lợi thế của việc sử dụng khung công tác moq này. Tại sao chúng ta không chỉ sử dụng FakeRepository của chúng ta? Hoặc xóa FakeRepository của chúng tôi và thêm sản phẩm giả mạo vào nó?
Lúc đầu, tôi nghĩ rằng khung moq đã có để tạo dữ liệu giả mạo, do đó bạn không phải làm như vậy nếu bạn có ví dụ 100 đối tượng giả để tạo.
Những gì tôi bỏ lỡ?
Kho lưu trữ Mock cũng có thể được sử dụng để tạo ngoại lệ, thay vì tinh chỉnh kho lưu trữ giả thành tối nghĩa. –