我是在模仿新的,我試圖做到這一點模擬例如:爲什麼與Expression <Func<T,bool>的這個模擬不匹配?
Repository.cs
public class Repository : IRepository
{
public List<Person> GetForExpression(Expression<Func<Person,bool>> expression )
{
... //get person from orm using expression
}
}
PersonService.cs
public class PersonService
{
private IRepository _repository;
public PersonService(IRepository repository)
{
_repository = repository;
}
public List<Person> GetAllPersonsWith18More()
{
var result = _repository.GetForExpression(x => x.Age > 18);
return result;
}
}
測試:
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var moqRepository = new Mock<IRepository>();
var service = new PersonService(moqRepository.Object);
Expression<Func<Person, bool>> criteria = y => y.Age 18;
moqRepository.Setup(x => x.GetForExpression(It.Is<Expression<Func<Person, bool>>>(y => y == criteria))).Returns(new List<Person>());
service.GetAllPersonsWith18More();
moqRepository.VerifyAll();
}
}
如果我使用此安裝程序工作: moqRepository.Setup(x => x.Ge tForExpression(It.IsAny >>()))。Returns(new List());
但我想使用更具體的標準,這只是一個例子,我做證明我需要什麼。
這個例子不匹配,任何人都可以幫助理解爲什麼並解決這個問題嗎?