Ich verbinde mich mit einem einfachen, wenn idiosynkratischen, externen Dienst.Wie können spöttische externe Dienste Unit-Tests verbessern?
Ich glaube, dass meine Komponententests nicht von der Verfügbarkeit oder Implementierung dieses externen Dienstes abhängen sollten, also beabsichtige ich, es auszuplauseln.
Ich brauche das Mock, um realistische Nachrichten und Antworten zu akzeptieren und zurückzugeben - sonst werden meine Tests keine echten Sachverhalte darstellen. Zum Beispiel muss es die richtige Art von Fehlern werfen - und es gibt mindestens 7 verschiedene Möglichkeiten, wie es scheitern kann (zwischen Ihnen und mir ist es kein sehr gut entworfener externer Dienst). Daher muss ich bei einem Minimum ein Hash von Nachrichten/Antwort-Paaren haben.
Anstatt die Kontingenz zu reduzieren, hat Spott es stattdessen woanders wieder eingeführt. In der Tat, wie das Sprichwort sagt, habe ich jetzt zwei Probleme: Ich muss sicher sein, dass das, was in meinem Hash ist, eine faire Darstellung dessen ist, wie sich der externe Dienst verhält. Aber sicherlich ist die kanonische Quelle dessen, was das Antwortobjekt X der Nachricht m gibt, X selbst. Alles andere ist riskant und chaotisch.
Habe ich falsch abgebogen? Wie kann ich diese scheinbare Zirkularität beseitigen?
BEARBEITEN Ich habe geklärt, was ich denke, das Problem ist angesichts der hilfreichen Kommentare der Justiz.
Ah ja, das war's, danke.Risiko und Wartung gehen nicht weg, einfach aufgrund der Tatsache, dass es ein _externer_ Service ist! Aber indem ich meine Erwartungen an sein Verhalten ausrücke, isoliere ich die Unsicherheit. –
Der Link zu 'meine zwei Antworten auf eine andere Frage' ist gebrochen. Kann jemand finden, wo es jetzt lebt? –
Dies sollte funktionieren. http://stackoverflow.com/questions/513778/what-do-you-think-of-junit-style-unit-testing-do-you-favor-behaviour-drive-tes/513807#513807 –