在演示者的方法中,我希望调用一个视图方法。这个方法也传递从服务方法中提取的数据(没有被模拟)。这个服务方法基本上从数据库获取数据并返回List(使用LINQ to SQL)。现在,当我在测试中写这个
List<customers> cus = expecteddata;
view.AssertWasCalled(v => v.InitializeCustomersForSelectedCity(cus));
Rhino.Mocks.Exceptions.ExpectationViolationException: ICustomerListView.InitializeCustomersForSelectedCity(System.Collections.Generic.List`1[DAL.Customer]); Expected #1, Actual #0.
我在演示者中测试的代码
public void HandleSelectedCity(int City)
{
selectedCity = City ;
_custometListForm.InitializeCustomersForSelectedCity(_CustomerListService.GetActiveCustomersForSelectedCity(selectedCity));
}
当我忽略参数时,测试工作正常 可能是什么问题?
答案 0 :(得分:3)
您断言基于cus
创建期望,List<customers>
是单元测试中定义的变量。但是,当调用InitializeCustomersForSelectedCity时,将使用GetActiveCustomersForSelectedCity的结果调用它 - object.Equals
的另一个实例。
Expectations设置基本上对预期的实例和实际实例执行List<customers>
操作。在你的情况下,他们是不同的,并且不满足期望。
您需要放弃接受任何{{1}}的期望,或者您还需要模拟GetActiveCustomersForSelectedCity,以便您可以从单元测试中定义返回的结果。