Danke für die Hinweise.
thopre hat geschrieben:
mir erschließt sich der Sinn noch nicht so ganz, warum du das überhaupt benötigst. Im obigen Beispiel testest du die Methode 'puts'. Warum? Die ist doch (hoffentlich) ausreichend getestet - eigentlich solltest du doch deinen eigenen Code testen ...
Meine Anwendung protokolliert zum Teil was sie macht. Und jetzt wollte ich prüfen, ob mein Protokoll meinen Erwartungen entspricht. Oder anders: Meine Funktion liefert ein Ergebnis (das ich mit dem Unittest prüfe), aber gleichzeitig gebe ich Hinweise auf evtl. Probleme bei der Abarbeitung. Und da will ich prüfen, ob wirklich die Warnung kommt, die ich eigentlich erwarte.
Da ich z.Zt. mein Programm mit einen Logger umstelle habe ich da evtl. auch einen Ansatz (Log in eine datei abspeichern und das vergleichen, oder anderweitig das Log als "Ergebnis" sammeln). Aber mit dem Abfangen von stdout (evtl stderr) könnte es auch funktionieren.
Noch ist es eher etwas Spielerei mit test/unit, aber bevor ich mein Programm umbaue wollte ich mal schauen, ob das machbar ist.
Betreff Mocking: Prinzipiell korrekt, aber wenn das Mock-Objekt komplexer wird als das eigentlich zu testende Objekt dann frage ich mich, ob der Test noch sinnvoll ist.