无法弄清楚犀牛嘲笑问题

时间:2010-02-03 05:37:20

标签: rhino-mocks

在演示者的方法中,我希望调用一个视图方法。这个方法也传递从服务方法中提取的数据(没有被模拟)。这个服务方法基本上从数据库获取数据并返回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));            
    }

当我忽略参数时,测试工作正常 可能是什么问题?

1 个答案:

答案 0 :(得分:3)

您断言基于cus创建期望,List<customers>是单元测试中定义的变量。但是,当调用InitializeCustomersForSelectedCity时,将使用GetActiveCustomersForSelectedCity的结果调用它 - object.Equals的另一个实例。

Expectations设置基本上对预期的实例和实际实例执行List<customers>操作。在你的情况下,他们是不同的,并且不满足期望。

您需要放弃接受任何{{1}}的期望,或者您还需要模拟GetActiveCustomersForSelectedCity,以便您可以从单元测试中定义返回的结果。