如何使用 Moq 模拟 - Expression> 的内容?
我正在尝试模拟对我的 repo 层的调用,该调用采用 LINQ 表达式来构造查询。我正在尝试以下语法,但失败了。SearchFor 方法不会被调用。
var array = new Employee[1];
array[0] = new Employee() { ID = 1234, Name = "Test" };
MockEmployeeRepo.Setup(x => x.SearchFor(It.IsAny<Expression<Func<Employee, bool>>>()))
.Returns(array.AsQueryable);
var list = EmployeeService.GetEmployees("Test");
MockEmployeeRepo.Verify(x => x.SearchFor(x1 => x1.Name == "Test"), Times.Once());
Assert.AreEqual("Test", list[0].Name);
这里的GetEmployees
方法如下所示。
public IEnumerable<Employee> GetEmployees(string name)
{
return repo.SearchFor(x => x.Name == name);
}