【发布时间】:2014-06-09 19:58:17
【问题描述】:
使用最小起订量和通用存储库。我无法成功测试以下方法。
[TestMethod()]
public void Employee_Service_Get_Users()
{
var mockRep = new Mock<IRepository<Employee>>(MockBehavior.Strict);
IList<Employee> newEmpLst = new List<Employee>();
Employee newEmp = new Employee();
mockRep.Setup(repos => repos.Find() <------ What belongs here?
var service = new EmployeeService(mockRep.Object);
var createResult = service.GetAllActiveEmployees();
Assert.AreEqual(newEmpLst, createResult);
}
它正在调用这个方法:
public IList<Employee> GetAllActiveEmployees()
{
return _employeeRepository.Find()
.Where(i=>(i.Status =="Active")).ToList(); <----It Bombs Here! ;)
}
我的通用存储库有以下内容:
public IQueryable<T> Find()
{
var table = this.LookupTableFor(typeof(T));
return table.Cast<T>();
}
我得到以下信息:
Moq.MockException: IRepository`1.Find() invocation failed with
mock behavior Strict. All invocations on the mock must have a corresponding
setup.
【问题讨论】:
-
你设置了一个
repos.FindAll,而调用的依赖是_employeeRepository.Find()。您需要为Find()添加Setup -
抱歉已编辑。我只是不确定我们如何为该函数调用 find() 。我不知道需要什么。
标签: unit-testing moq