Кажется, я не могу понять первую часть этого теста.
Я изо всех сил пытаюсь понять, что происходит в первой части теста.
[Test]
public void Can_Delete_Product()
{
// Arrange: Given a repository containing some product...
**var mockRepository = new Mock<IProductsRepository>();
var product = new Product { ProductID = 24, Name = "P24" };
mockRepository.Setup(x => x.Products).Returns(new[] { product }.AsQueryable());**
// Act: ... when the user tries to delete that product
var controller = new AdminController(mockRepository.Object);
var result = controller.Delete(24);
// Assert: ... then it's deleted, and the user sees a confirmation
mockRepository.Verify(x => x.DeleteProduct(product));
result.ShouldBeRedirectionTo(new { action = "Index" });
controller.TempData["message"].ShouldEqual("P24 was deleted");
}
Почему это? mockRepository.Setup(x => x.Products).Returns(new[] { product }.AsQueryable());
Это фактически говорит продуктам в хранилище, чтобы они возвращали новый продукт, который можно запросить? но почему?
Если бы кто-нибудь с некоторым опытом в юнит-тестах мог мне помочь, я был бы рад!
Благодарю.
1 ответ
Решение
Нашел решение.
mockRepository.Setup (x => x.Products).Returns (new [] {product}.AsQueryable ());
Фактически он настраивает репозиторий, чтобы он возвращал для каждого продукта новый продукт, который можно запрашивать.