ich Sinatra App haben, die Seiten als schreibgeschützt oder editierbare dient je nachdem, ob der Benutzer angemeldet ist.Testing Controller Instanzvariablen mit Rack-:: Test und Sinatra
Der Regler eine Variable @can_edit
setzt, dh Wird von den Ansichten verwendet, um Bearbeitungslinks zu verbergen/anzuzeigen. Wie kann ich den Wert @can_edit
in meinen Tests testen? Ich habe keine Ahnung, wie ich unter Rack :: Test auf die aktuelle Instanz des Controllers zugreifen kann.
Ich benutze class_eval
die logged_in?
Methode in der Steuerung Stummel, aber ich habe auf die Überprüfung last_response.body
für meine bearbeiten Links zu greifen, um festzustellen, ob @can_edit
oder nicht festgelegt wurde.
Wie kann ich den Wert von @can_edit
direkt testen?
"Es ist am besten, auf Ergebnisse zu testen, nicht Implementierungsdetails" Ich habe ähnliche Aussagen wie diese zuvor gesehen, und ich muss widersprechen. Wenn Sie 2 wollen, funktioniert 1 + 1 ganz gut, aber auch 1 + 2 + 10 - 11. Keine davon bedeutet, dass Ihre Anwendung "tatsächlich ordnungsgemäß funktioniert". – nowk
Ich stimme Ihnen jedoch nicht völlig zu: Sagen wir, es gibt eine Methode, die falsch implementiert wird.Wenn die Methode in 100% der Fälle die richtige Antwort liefert (Sie können sich keinen Fall vorstellen, bei dem ein Fehler auftritt), ist die Implementierung wirklich "inkorrekt"? Ist es wichtig? Wenn Sie feststellen, dass Sie die Werte von Variablen in Methoden testen, verfügen Sie möglicherweise nicht über genügend Testfälle (Eingaben). Wenn Sie Variablen umbenennen oder die Implementierung der Anwendung ändern, ohne ihr Verhalten zu ändern, sollten Ihre Tests ohne Änderungen ausgeführt werden. Dies ist ein wichtiger Grund für die Verwendung von Tests an erster Stelle. –
Ich denke, das Testen von @can_edit testet die Ausgabe des Controllers. Ich mag es nicht, es indirekt zu testen, indem ich die Ansicht überprüfe, was passiert, wenn @can_edit gesetzt wird. Das sollte ein anderer Test sein, nur für die Ansicht. – Brian