【问题标题】:Assert that a method was called with an object that is changed in the method断言使用方法中更改的对象调用方法
【发布时间】:2015-04-25 14:36:52
【问题描述】:

这就是我要测试的方法:

public void Set1(ViewModelA viewModelA)
{
   var viewModelB = new ViewModelB
   {
      FirstName = viewModelA.FirstName,
      LastName = viewModelB.LastName
   }
   service.Set2(viewModelB);
}

如何断言传递给 service.Set2 的 viewModelB 实例具有从 viewModelA 映射的属性值,并且 Set2 将 viewModelB 作为参数?

【问题讨论】:

    标签: unit-testing mocking rhino-mocks


    【解决方案1】:

    假设您已经模拟了 service 实例,您应该能够执行以下操作:

    service.AssertWasCalled(s => s.Set2(
      Arg<ViewModelB>.Matches(b =>
        b.FirstName == "TheFirstName" && b.LastName == "TheLastName"
      )
    ));
    

    实际上,您所做的是断言 Set2 方法已被调用,并被赋予了一个 ViewModelB 实例,其名字和姓氏与您的预期相符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多