Frage

Vor kurzem habe ich begonnen zu arbeiten Email2SMS in unserem Produkt verfügen. Als ich das Projekt angeschlossen hatte diese Komponente Null Code Coverage von Komponententests. Legacy-Code.

Da ich arbeite daran begann, war ich Test-First-Ansatz. Aber der Code-Qualität war sehr gering. Es war sehr schwer, es und Tests kleine Stücke von Komponententests zu spalten, so entschied ich mich Integrationstest schreiben zu können.

Es gibt PHP-Skript, das eine Botschaft Informationen übernimmt, für Benutzer in DB suchen und einige Informationen speichern, wenn alles in Ordnung ist.

$last_line = system('php emailtosms.php -file=unicode_message.txt ', $retval);

$this->assertStringExistsInLogFile('Email to SMS message was not sent');

Ist es schlecht oder nicht? Wie würden Sie dieses Problem lösen?

War es hilfreich?

Lösung

Nicht so gut.

Test auf einem niedrigeren Niveau, durch das emailtosms.php Skript als eine einfache Wrapper aufweisen, der die Befehlszeile args verarbeitet und dann zu mehr prüfbar Klasse abgehen. Je nach dem letzten Schritt können Sie Unit-Tests schreiben fast alle, aber die endgültige Sende zu tun (vielleicht den letzten Schritt verspotten, dass es tatsächlich sendet, und es nur zu einer Variablen speichern, können Sie dann etwas gültig ankommen überprüfen haben).

Die endgültige Integration verläuft über die gesamte Klasse End-to-End, und seinen Ausgang überprüfen, in der letzten Log-Suche - oder etwas höhere Ebene, was ich anmelden gesetzt werden würde

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top