【发布时间】:2009-09-22 09:47:43
【问题描述】:
我正在尝试测试我的班级对 BackgroundWorker 触发 RunWorkerCompleted 事件时发生的情况有何反应。
我正在使用RhinoMocks(如果有其他方法我也愿意尝试),代码如下:
//arrange
var bw1 = MockRepository.GenerateStub<BackgroundWorker>();
Action work1 = () => Thread.Sleep(1);
WorkQueueProcess processInQueue = new WorkQueueProcess(bw1) { Work = work1 };
var tested = new WorkQueue() { processInQueue };
// act
bw1.Raise(
bw => bw.RunWorkerCompleted +=
null,
bw1,
new RunWorkerCompletedEventArgs(null, null, false)
);
// assert
Assert.AreEqual(false, tested.IsBusy);
我得到一个例外,上面写着:
调用无效,上次调用已 已使用或未拨打电话(拨打 确保您正在调用虚拟 (C#)/可覆盖(VB)方法)。
我做错了什么?是因为BackgroundWorker没有虚方法吗?我认为无论如何我都应该能够发起一个活动,因为活动几乎不是虚拟的。
【问题讨论】: