1
我想測試,下面的代碼將引發財產時提出的MyEvent事件:你如何從Rhino Mocks的嚴格模擬中舉辦活動?
public interface IEventRaiser
{
event EventHandler<Args> MyEvent;
void DoSomething();
}
public class EventSubscriber
{
public EventSubscriber(IEventRaiser raiser)
{
this.raiser = raiser;
this.raiser.MyEvent += EventRaised;
}
private readonly IEventRaiser raiser;
private void EventRaised(object sender, Args args)
{
raiser.DoSomething();
Raised = true;
}
public bool Raised {get; private set;}
}
我使用以下NUnit測試代碼,但事件似乎從來沒有得到提升。 EventRaised方法從不運行:
[TestFixture]
public class EventSubscriberTests
{
private MockRepository mocks;
private IEventRaiser raiser;
private EventSubscriber target;
[SetUp]
public void SetUp()
{
mocks = new MockRepository();
raiser = mocks.StrictMock<IEventRaiser>();
raiser.Expect(r => r.MyEvent += null).IgnoreArguments();
mocks.ReplayAll();
target = new EventSubscriber(raiser);
}
[TearDown]
public void TearDown()
{
mocks.VerifyAll();
}
[Test]
public void VerifyEventIsSubscribedTo()
{
raiser.BackToRecord();
raiser.Expect(r => r.DoSomething());
raiser.Replay();
raiser.Raise(r => r.MyEvent += null, raiser, new Args {Property = true});
Assert.IsTrue(target.Raised);
}
}
如果我沒有在提高事件之前添加額外的期望,這工作正常。但是,我似乎無法使它與它一起工作。我究竟做錯了什麼?