【问题标题】:Assert a method was called whilst verifying the parameters are correct断言在验证参数正确时调用了一个方法
【发布时间】:2014-01-21 17:52:38
【问题描述】:

鉴于我的测试中的以下 sn-p:

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

【问题讨论】:

标签: unit-testing mocking c#-3.0 rhino-mocks-3.5


【解决方案1】:

好吧,基于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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 2011-04-19
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多