如何使用最小起订量设置控制器的方法
How to setup a controller's method using moq
我的控制器中有一个操作方法如下
public ActionResult Index()
{
var supplier = GetSupplierForUser();
var model = SupplierService.GetOutstandingItems(supplier);
return View(model);
}
我已将供应商服务方式设置为
var supplierService = new Mock<ISupplierService>();
var supplier = new Supplier { Name = "Some Name",Id = 100};
supplierService.Setup(s => s.GetOutstandingItems(supplier))
.Returns(outstandingSupplierItemInfo.Object);
我不知道我们如何将基础控制器中存在的方法 Supplier GetSupplierForUser()
设置为 return 供应商对象。从上面的最小起订量设置中,空供应商总是传递给 SupplierService.GetOutstandingItems(supplier)
有什么想法吗?谢谢
也许你需要:
supplierService.Setup(s => s.GetOutstandingItems(It.IsAny<Supplier>()))
.Returns(outstandingSupplierItemInfo.Object);
It.IsAny<>
内容将使您的 Setup
匹配任何传入对象(参数)。
由于您使用了松散的模拟,如果没有 Setup
匹配有问题的参数,Moq 将只是 return null
。考虑使用 MockBehavior.Strict
代替异常。
如果不使用 It.IsAny<>
,Moq 将不得不尝试查看传递给 Moq 的供应商,"is equal to" 您制作 supplier
时使用的Setup
。在这里,您的类型(class
或 struct
)Supplier
具有的 .Equals(...)
语义变得很重要。
如果您没有相关的 Equals
语义,但仍想将 Setup
限制在特定情况下,请试试这个:
supplierService
.Setup(s => s.GetOutstandingItems(It.Is((Supplier s) => s.Name == "Some Name" && s.Id == 100)))
.Returns(outstandingSupplierItemInfo.Object);
我的控制器中有一个操作方法如下
public ActionResult Index()
{
var supplier = GetSupplierForUser();
var model = SupplierService.GetOutstandingItems(supplier);
return View(model);
}
我已将供应商服务方式设置为
var supplierService = new Mock<ISupplierService>();
var supplier = new Supplier { Name = "Some Name",Id = 100};
supplierService.Setup(s => s.GetOutstandingItems(supplier))
.Returns(outstandingSupplierItemInfo.Object);
我不知道我们如何将基础控制器中存在的方法 Supplier GetSupplierForUser()
设置为 return 供应商对象。从上面的最小起订量设置中,空供应商总是传递给 SupplierService.GetOutstandingItems(supplier)
有什么想法吗?谢谢
也许你需要:
supplierService.Setup(s => s.GetOutstandingItems(It.IsAny<Supplier>()))
.Returns(outstandingSupplierItemInfo.Object);
It.IsAny<>
内容将使您的 Setup
匹配任何传入对象(参数)。
由于您使用了松散的模拟,如果没有 Setup
匹配有问题的参数,Moq 将只是 return null
。考虑使用 MockBehavior.Strict
代替异常。
如果不使用 It.IsAny<>
,Moq 将不得不尝试查看传递给 Moq 的供应商,"is equal to" 您制作 supplier
时使用的Setup
。在这里,您的类型(class
或 struct
)Supplier
具有的 .Equals(...)
语义变得很重要。
如果您没有相关的 Equals
语义,但仍想将 Setup
限制在特定情况下,请试试这个:
supplierService
.Setup(s => s.GetOutstandingItems(It.Is((Supplier s) => s.Name == "Some Name" && s.Id == 100)))
.Returns(outstandingSupplierItemInfo.Object);