鉴于我的测试中的以下片段:
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
的本地名称。
我如何:
provider.SaveItem
被称为 ,同时 item.Id
,user
和contents
的值应该是正确的。我想我可以使用mockProvider.AssertWasCalled,但无法弄清楚设置传递给SaveContract
的构造函数的参数条件的语法。
TIA
答案 0 :(得分:0)
好的,基于this,我做了类似以下的事情:
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);