gpt4 book ai didi

c# - 我可以在 Rhino Mocked 对象上定义方法的实现吗?

转载 作者:太空狗 更新时间:2023-10-30 01:25:58 25 4
gpt4 key购买 nike

使用 Rhino.Mocks,一旦我模拟了一个界面,我就可以:

  • 为模拟对象上的非 void 方法设置“返回”值
  • 检查某些方法的调用方式和值

但是,是否可以有选择地为模拟对象上的方法定义一个实现?

理想情况下我想这样做(RhinoImplement 是我希望存在的 Rhino 扩展!):

var messages = new List<IMessage>();

IBus bus = MockRepository.GenerateMock<IBus>();

bus.RhinoImplement(b => b.Send(Arg<IMessage>.Is.Anything), imess => messages.Add(imess));

//now run your test on the Class that uses IBus

//now, I can inspect my local (List<IMessage>)messages collection

用答案更新

感谢帕特里克在下面的回答,实现上述目标的正确代码是:

var messages = new List<IMessage>();

IBus bus = MockRepository.GenerateMock<IBus>();

bus
.Expect(b => b.Send(Arg<IMessage>.Is.Anything))
.WhenCalled(invocation => messages.Add((IMessage)invocation.Arguments[0]))
.Repeat.Any() //the repeat part is because that method might be called multiple times

//now run your test on the Class that uses IBus

//now, I can inspect my local (List<IMessage>)messages collection

最佳答案

关于c# - 我可以在 Rhino Mocked 对象上定义方法的实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5958108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com