2 Stimmen

Was habe ich hier falsch gemacht, als ich versuchte, eine Klasse zu testen, die auf einen Webdienst verweist?

Ich hatte also eine Klasse, die eine Klasse referenzierte, die eine andere Klasse referenzierte, die einen Webdienst aufrief.

Ich lerne also, wie man eine Schnittstelle mit Hilfe von Teilklassen erstellt.

Ich injiziere den Webdienst über den Konstruktor.

Dann schlägt mein Unit-Test fehl, weil ich den eigentlichen Webdienst in der zweiten Ebene der Klasse neu aufrufe. Also ändere ich am Ende alle drei Klassen, um den Webdienst durch den Konstruktor nach unten zu übergeben... war nicht glücklich :-( gab auf....

Was sollte ich in diesem Fall tun?

4voto

Grzenio Punkte 34566

Sie sollten Schnittstellen anstelle von Teilklassen verwenden. Ihr Konstruktor erwartet dann eine Schnittstelle anstelle der konkreten Implementierung. In den Tests erstellen Sie statt der echten Klasse ein "Mock" mit einem der Mocking-Frameworks, z.B. verwende ich Rhino Mocks, auf deren Dokumentationsseite Sie zahlreiche Beispiele finden: http://ayende.com/wiki/Rhino+Mocks+Dokumentation.ashx

1voto

P.K Punkte 17959

Die Schicht, die mit dem Webdienst interagiert, sollte so gestaltet sein, dass sie eine Schnittstelle hat. Diese sollte in andere Schichten injiziert werden (durch ctor/property/method..es gibt auch andere Möglichkeiten). Der Produktionscode wird die eigentliche Webservice-Implementierung verwenden. Der Testcode wird ein Mock-Objekt verwenden. Wenn Sie etwas Code posten, werden Sie bessere Antworten erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X