Can';我似乎搞不懂nunit测试的第一部分

Can';我似乎搞不懂nunit测试的第一部分,nunit,nunit-mocks,Nunit,Nunit Mocks,我很难理解考试第一部分的内容 [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

我很难理解考试第一部分的内容

[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");
}
[测试]
public void可以删除产品()
{
//安排:给定包含某些产品的存储库。。。
**var mockRepository=new Mock();
var product=新产品{ProductID=24,Name=“P24”};
mockRepository.Setup(x=>x.Products).Returns(new[]{product}.AsQueryable())**
//行为:…当用户试图删除该产品时
var controller=newadmincontroller(mockRepository.Object);
var结果=控制器。删除(24);
//断言:…然后它被删除,用户看到一个确认
mockRepository.Verify(x=>x.DeleteProduct(产品));
result.ShouldBeRedirectionTo(新的{action=“Index”});
controller.TempData[“message”]。ShouldEqual(“P24已删除”);
}
为什么会这样?mockRepository.Setup(x=>x.Products).Returns(new[]{product}.AsQueryable())

它实际上告诉存储库中的产品返回一个可查询的新产品?但是为什么呢

如果在单元测试方面有经验的人能帮助我,我会很高兴

谢谢。

找到了解决方案

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


它实际上设置了存储库来为每个产品返回一个可查询的新产品。

您可能需要考虑查看更现代的隔离(MOCKGE)框架,例如MOQ。看见