Кажется, я не могу понять первую часть этого теста. - PullRequest
1 голос
/ 22 января 2011

Я изо всех сил пытаюсь понять, что происходит в первой части теста.

[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 Ответ

0 голосов
/ 01 февраля 2011

Найденное решение.

mockRepository.Setup (x => x.Products) .Returns (new [] {product} .AsQueryable ());

Он фактически настроил хранилище так, чтобы оно возвращало для каждого продукта новый продукт, который можно запросить.

...