[英]Assert a method was called whilst verifying the parameters are correct
Given the following snippet from my test: 根据我的测试中的以下代码段:
var mockProvider = MockRepository.GenerateMock<IItemProvider>();
var target = new ItemService(mockProvider);
target.SaveItem(item);
Internally target.SaveItem
makes a call like this: 在内部
target.SaveItem
进行如下调用:
provider.SaveItem(new SaveContract(item.Id, user, contents));
where provider
is the local name for the mockProvider
passed in. 其中
provider
是传入的mockProvider
的本地名称。
How do I: 我如何:
provider.SaveItem
is called whilst also provider.SaveItem
是否被调用,同时 item.Id
, user
and contents
are as they should be. item.Id
, user
和contents
的值应该是正确的。 I think I might be able to use mockProvider.AssertWasCalled but can't figure out the syntax to set the condition of the parameters passed to the constructor of SaveContract
. 我想我也许可以使用mockProvider.AssertWasCalled,但无法弄清楚语法来设置传递给
SaveContract
构造函数的参数的条件。
TIA TIA
Ok so based on this I did something like the following: 好的,因此我基于此执行了以下操作:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.