断言使用在方法中更改的对象调用方法

时间:2015-04-25 14:36:52

标签: unit-testing mocking rhino-mocks

这就是我要测试的方法:

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

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

1 个答案:

答案 0 :(得分:0)

假设你嘲笑了service个实例,你应该能够做到这样的事情:

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

基本上你正在做的是断言调用了Set2方法,并且给了一个ViewModelB实例,其名字和姓氏与你期望的相匹配。