您是否正在寻找一种方法来编写单元测试,在这种情况下,被测系统认为它从队列接收事件,但您不想在测试期间使用真正的队列?
退房
Rhino Mocks
. 它允许您创建队列接口的模拟版本,然后在测试期间从中引发事件。测试requester.dosomething()方法的一些伪代码可能如下所示:
// SETUP
MockRepository mocks = new MockRepository();
IQueue mockQueue = mocks.StrictMock<IQueue>();
queue.Received+=null;//create an expectation that someone will subscribe to this event
LastCall.IgnoreArguments();// we don't care who is subscribing
IEventRaiser raiseReceivedEvent = LastCall.GetEventRaiser();//get event raiser for the last event, in this case, Received
Expect.Call(mockQueue.Send).Return(msgId);
mocks.ReplayAll();
// EXEC
Requester req = new Requester(mockQueue);
// We expect this method to send a request to the mock queue object.
req.DoSomething();
// Now we raise an event from the mock queue object.
raiseReceivedEvent.Raise(eventArgs);
// VERIFY
// we would probably also check some state in the Requester object
mocks.VerifyAll();
退房
Rhino mocks wiki
所有细节。