首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Rhino Mock模拟不可设置的子属性

使用Rhino Mock模拟不可设置的子属性
EN

Stack Overflow用户
提问于 2010-04-22 19:52:47
回答 1查看 339关注 0票数 2

我目前的接口很像下面这样:

代码语言:javascript
复制
interface IService
{
   void Start();
   IHandler ServiceHandler { get; }
}

interface IHandler
{
   event EventHandler OnMessageReceived;
}

使用Rhino mock可以很容易地模拟IService,但它不会将任何IHandler实例分配给ServiceHandler属性。因此,当我的被测方法向_mockedService.ServiceHandler.OnMessageReceived添加一个事件处理程序时,我得到一个“Object reference not set”错误。

如何确保在模拟的IService实例中为ServiceHandler赋值?

这很可能是Rhino Mocks 101,但我只是在加快速度...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-22 19:55:22

代码语言:javascript
复制
IService service = MockRepository.GenerateStub<IService>();
IHandler stubHandler = MockRepository.GenerateStub<IHandler>();
service.Stub(s => s.ServiceHandler).Return(stubHandler);

//assertions

或者,如果你需要在你的假货上记录期望,你可以使用GenerateMock。

编辑:对于旧版本的RhinoMocks,您可以执行以下操作:

代码语言:javascript
复制
MockRepository mocks = new MockRepository();
IService service = mocks.CreateStub<IService>();
IHandler handler = mocks.CreateStub<IHandler>();

using (mocks.Record())
{
    SetupResult.For(service.ServiceHandler).Return(handler);
    //setup expectations using Expect.Call
}

using (mocks.Playback())
{
    //assertions
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2690478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档