Wenn die zweite Zeile dieser Code Rhino Mocks eine InvalidOperationException mit einer Nachricht führt die Ausführung „Aktion ist ungültig, wenn das Mockobjekt in Replay Zustand“Wann tritt ein Mock-Objekt in den Wiedergabestatus ein?
var mockScanner = MockRepository.GenerateMock<PortScanner>(null);
mockScanner.Expect((scanner => { scanner.Scan(null, null); }));
der Code in einem Debugger Stepping durch eines der sehen kann Debugger führt die in der Klasse definierte Methode aus und direkt nach der Kontrolle verlässt diese Methode die Ausnahme.
Dieser ähnliche Code in einem anderen Test funktioniert ohne Problem
var mockView = MockRepository.GenerateMock<IScanView>(null);
mockView.Expect(view => { view.Close(); });
var controller = new ScanController(mockView);
controller.Exit();
mockView.VerifyAllExpectations();
Der einzige Unterschied, dass ich daran denken kann jeden consequense zwischen ond zwei Tests sein könnte, dass Exit ist ein Mitglied an einer Schnittstelle während Scan ist ein virtuelles Mitglied in einer Klasse
Was fehlt mir?
aktualisieren
Weitere Explorations haben darauf hingewiesen, dass dies auf die Art und Weise zusammenhängt Rhino virtuelle Methoden behandelt. Ich konzentriere mich jetzt auf das Studium der Dokumentation hier
Ich habe gerade gelesen, dass ich das heute mache. Der Dokumentationslink zum Wiki-Eintrag von Rhino Mocks lautet: http://ayende.com/Wiki/(S(vcy2bn55h5cja0vsedn14y45))/Rhino+Mocks+in-Internal+Methods.ashx –