Podczas wykonywania drugą linię tego kodu Rhino Mocks rzuca InvalidOperationException z komunikatem „Ta akcja jest nieważny, gdy atrapa obiektu jest w stanie replay”Kiedy obiekt próbny wchodzi w stan odtwarzania?
var mockScanner = MockRepository.GenerateMock<PortScanner>(null);
mockScanner.Expect((scanner => { scanner.Scan(null, null); }));
Stepping poprzez kod w debuggera można zobaczyć debugger uruchamia metodę zdefiniowaną w klasie i bezpośrednio po tym, jak kontrola opuści tę metodę, wystąpi wyjątek.
Podobny kod w innym teście działa bez problemu
var mockView = MockRepository.GenerateMock<IScanView>(null);
mockView.Expect(view => { view.Close(); });
var controller = new ScanController(mockView);
controller.Exit();
mockView.VerifyAllExpectations();
Jedyna różnica, że mogę myśleć, że może być z dowolnego consequense między theese dwóch testów jest to, że wyjście jest członkiem na interfejsie while Skanowanie jest wirtualnym członkiem klasy
Czego mi brakuje?
Aktualizacja
Dalsze badania wykazały, że jest to związane ze sposobem Rhino obsługuje metod wirtualnych. Skupiam się teraz na badaniu mmy dokumentacji tutaj
Po prostu czytałem o tym dzisiaj. Link do dokumentacji wiki Rhino Mocks to: http://ayende.com/Wiki/(S(vcy2bn55h5cja0vsedn14y45))/Rhino+Mocks+-+Internal+Methods.ashx –