ICustomerRepository 定义: Customer GetCustomerByID(int CustomerID);

//Arrange
var customers = new Customer()
{
   new Customer() { CustomerID = 1, Name = "Richard" },
   new Customer() { CustomerID = 2, Name = "Evan" },
   new Customer() { CustomerID = 3, Name = "Marie-France" },
}.AsQueryable();

Mock<ICustomerRepository> mock = new Mock<ICustomerRepository>();

我如何告诉 Moq 根据 CustomerID 参数返回正确的客户???

我已经能够设置第一部分,但不能设置返回对象。
 mock.Setup(m => m.GetCustomerByID(It.Is<int>(i => i >= 0))).Returns(/// To be define///)

想法是具有与此相同的结果:
public Customer GetCustomerByID(int CustomerID)
{
  return customers.FirstOrDefault(c => c.CustomerID == CustomerID);
}

谢谢你的帮助

最佳答案

mock.Setup(x => x.GetCustomerByID(It.IsAny<int>()))
    .Returns((int id) =>
    customers.FirstOrDefault(c => c.CustomerID == id));

只需让客户成为 List<Customer> - 不需要 AsQueryable。

关于Moq:如何根据方法参数返回结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7897796/

10-11 10:21
查看更多