简体   繁体   English

在确认参数正确的同时声明一个方法被调用

[英]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: 我如何:

  1. Verify provider.SaveItem is called whilst also 验证provider.SaveItem是否被调用,同时
  2. Asserting that the values of item.Id , user and contents are as they should be. 断言item.Idusercontents的值应该是正确的。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM