Я пытаюсь проверить, как мой класс реагирует на то, что происходит, когда 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 нет виртуальных методов? Я думал, что должен иметь возможность поднять событие независимо, потому что событие почти никогда не бывает виртуальным.