0

鉴于我的测试中的以下片段:

var mockProvider = MockRepository.GenerateMock<IItemProvider>();

var target = new ItemService(mockProvider);

target.SaveItem(item);

在内部target.SaveItem进行这样的调用:

provider.SaveItem(new SaveContract(item.Id, user, contents));传入provider的本地名称在哪里。mockProvider

我如何能:

  1. 验证同时也provider.SaveItem被调用
  2. 断言 , 和 的值item.Idusercontents应有的值。

我想我可能可以使用 mockProvider.AssertWasCalled 但无法弄清楚设置传递给构造函数的参数条件的语法SaveContract

TIA

4

1 回答 1

0

好的,基于,我做了以下事情:

var mockProvider = MockRepository.GenerateMock<IItemProvider>();
var target = new ItemService(mockProvider);
Item testItem = null;

mockProvider.Expect(c => c.SaveItem(Arg<Item>.Is.Anything))
.WhenCalled(call =>
{
    testItem = (Item)call.Arguments[0];
});


target.SaveItem(item);//item initialised elsewhere


Assert.AreEqual(item.Id, testItem.Id);
于 2014-01-22T15:05:52.767 回答