[英]How do you raise an event from a Strict Mock in Rhino Mocks?
我想測試引發MyEvent事件時以下代碼是否設置了Raised屬性:
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);
}
}
如果在發起活動之前我沒有添加額外的期望,則效果很好。 但是,我似乎無法使其兼容。 我究竟做錯了什么?
默認情況下,BackToRecord方法清除所有先前的期望。 我實際上需要使用BackToRecord(BackToRecordOptions.None)來維持先前的狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.