При выполнении второй строки этого кода Rhino Mocks Выдает InvalidOperationException с сообщением «Это действие является недопустимым, когда фиктивный объект находится в переигровки состоянии»Когда макет вводится в состояние воспроизведения?
var mockScanner = MockRepository.GenerateMock<PortScanner>(null);
mockScanner.Expect((scanner => { scanner.Scan(null, null); }));
Stepping через код в отладчике можно увидеть debugger запускает метод, определенный в классе, и сразу после того, как элемент управления покидает этот метод, возникает исключение.
Это аналогичный код в другом тесте делает работу без проблем
var mockView = MockRepository.GenerateMock<IScanView>(null);
mockView.Expect(view => { view.Close(); });
var controller = new ScanController(mockView);
controller.Exit();
mockView.VerifyAllExpectations();
Единственная разница, что я могу думать о том, что может быть любого consequense между theese двух тестов является то, что выход является членом на интерфейсе, а сканирование является виртуальным членом класса
Что мне не хватает?
Update
Дальнейшее исследование показало, что это связано с тем, как Rhino обрабатывает виртуальные методы. Я сосредоточен на изучении документации здесь сейчас
Я только что прочитал об этом сегодня. Ссылка на документацию к вики-записи Rhino Mocks: http://ayende.com/Wiki/(S(vcy2bn55h5cja0vsedn14y45))/Rhino+Mocks+-+Internal+Methods.ashx –