我目前的接口很像下面这样:
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,但我只是在加快速度...
发布于 2010-04-22 19:55:22
IService service = MockRepository.GenerateStub<IService>();
IHandler stubHandler = MockRepository.GenerateStub<IHandler>();
service.Stub(s => s.ServiceHandler).Return(stubHandler);
//assertions或者,如果你需要在你的假货上记录期望,你可以使用GenerateMock。
编辑:对于旧版本的RhinoMocks,您可以执行以下操作:
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
}https://stackoverflow.com/questions/2690478
复制相似问题