2010-09-29 12 views
5

Gibt es irgendeinen greifbaren Wert beim Testen Ihrer eigenen HTML-Helfer? Viele dieser Dinge spucken einfach eine Menge HTML-Markup aus - es gibt wenig, wenn auch keine Logik. Also, vergleichen Sie einfach eine große HTML-Zeichenfolge mit einer anderen? Ich meine, einige dieser Dinge erfordern, dass Sie das generierte Markup in einem Browser betrachten, um zu überprüfen, ob es die gewünschte Ausgabe ist.Warum sollte ich meine HTMLHelpers testen?

Scheint ein wenig sinnlos.

+1

Sehen Sie sich HtmlTags an, um Ihr Markup zu generieren. Es ist in FubuMVC enthalten, aber Sie können es separat erstellen. Sie müssen sich nicht darum kümmern, Tags oder falsche Zitate zu schließen. – Ryan

Antwort

2

Ja.

Auch wenn es jetzt wenig bis keine Logik gibt, bedeutet das nicht, dass es nicht mehr Logik geben wird, die auf der Straße hinzugefügt wird. Wenn diese Logik hinzugefügt wird, möchten Sie sicherstellen, dass die vorhandene Funktionalität nicht beeinträchtigt wird.

Das ist einer der Gründe, warum Unit Tests geschrieben werden.

Wenn Sie der Test Driven Development folgen, schreiben Sie zuerst den Test und schreiben dann den Code, um den Test zu erfüllen.

Das ist ein anderer Grund.

Sie möchten auch sicherstellen, dass Sie mögliche Kantenfälle mit Ihrem Helper identifizieren und testen (wie HTML-Literale ohne Entschlüsselung, nicht codierte Sonderzeichen usw.).

+0

Warum setzen Sie Logik in einen HTML-Helfer? Sollte das nicht in deinem Modell sein? Wenn Sie ein Modell zum Erzeugen von HTML verwenden (wie HtmlTags oder sogar TagBuilder), müssen Sie sich nicht einmal darum kümmern, welche Ausgabe erzeugt wird. – Ryan

+0

@Ryan - Das Modell ist deine Daten .... da sollte es überhaupt keine Logik geben. Html-Helfer helfen der Ansicht, das Modell korrekt zu rendern. Abhängig vom Modell wird möglicherweise einfache Logik benötigt, um die Dinge im Browser korrekt darzustellen. Andere Helfer sind komplizierter ... wie Html.TextBoxFor(). –

+0

"Das Modell ist Ihre Daten .... da sollte es überhaupt keine Logik geben." Ich bin mir nicht sicher, was ich dazu sagen soll. Entweder haben wir unterschiedliche Vorstellungen davon, was ein Modell ist, oder Sie arbeiten direkt mit DB-Entitäten. Ich persönlich bevorzuge ein reichhaltiges, verhaltensbasiertes Modell. Was html-Helfer betrifft, denke ich, dass mein komplexester von ungefähr 3 Zeilen ist und einfach in einen Templating-Rahmen einruft, den ich mir von FubuMVC geliehen habe. – Ryan

0

Ich denke, es hängt davon ab, wie viele Leute es verwenden/ändern werden. Ich erstelle normalerweise einen Komponententest für einen HTML-Helfer, wenn ich weiß, dass viele Leute sie in die Hände bekommen können, oder wenn die Logik komplex ist. Wenn ich der einzige bin, der es benutzt, werde ich meine Zeit (oder das Geld meines Arbeitgebers) nicht verschwenden.

Ich kann verstehen, dass Sie nicht wollen, um die Tests zu schreiben, obwohl ... es kann ziemlich ärgerlich sein, ein paar Zeilen HTML-Code zu schreiben, die 5x die Menge zum Testen benötigt.

0

es dauert eine einfache Eingabe und stellt eine einfache Ausgabe. Dies ist ein gutes für TDD, da die Zeit, die Sie für Build-> Start-Seite-> dieses dumme Problem beheben-> von neuem beginnen-> oops, verpasste diese andere kleine Sache-> Start ... wir sind fertig , glücklich :). Dev 2 kommt und macht kleine Änderungen, um es für etwas zu "reparieren", das nicht funktioniert hat, der gleiche Zyklus geht weiter und dev 2 hat nicht bemerkt, als es deine anderen Szenarien durchbrach.

Stattdessen v. Schnell den v. Einfachen einfachen Text, y, dass einfache Ausgabe gab Ihnen diese einfache Ausgabe, die Sie mit all den schließenden Tags und Anführungszeichen erwarteten Sie erwartet hatten.

0

Nachdem HTML Helpers beispielsweise für Sitemap-Menüs oder Schaltflächen für ein Wizard-Framework geschrieben wurde, kann ich Ihnen versichern, dass einige Hilfsprogramme über eine ausreichende Logik verfügen, besonders wenn sie von anderen verwendet werden sollen.

Es kommt also darauf an, was man wirklich mit ihnen macht. Und nur du weißt die Antwort darauf.

Die allgemeine Antwort ist, dass Html Helper beliebig komplex sein können (oder einfach), je nachdem, was Sie tun. Also ist der Klacks wie bei allem anderen zu testen, wenn es nötig ist.

0

Ja, es gibt Wert. Wie viel Wert ist zu bestimmen. ;-)

Sie könnten mit grundlegenden "Returns SOMEing" -Tests beginnen, und nicht wirklich, was? Im Grunde nur schnelle Vernunfttests, falls etwas Grundlegendes bricht. Wenn Probleme auftauchen, fügen Sie weitere Details hinzu.

Überlegen Sie auch, ob Ihre Tests den HTML-Code in DOMs zerlegen, die wesentlich einfacher zu testen sind als Strings, besonders wenn Sie nur ein bestimmtes Bit suchen.

Oder ... wenn Sie automatisierte Tests gegen die Webanwendung selbst haben, stellen Sie sicher, dass es Tests gibt, die speziell auf die Ausgabe Ihrer Helfer zugeschnitten sind.

0

Ja, es sollte getestet werden. Faustregel: Wenn es sich nicht lohnt, es zu testen, lohnt es sich nicht, es zu schreiben.

Allerdings müssen Sie hier ein wenig vorsichtig sein, wenn Sie Ihre Tests schreiben. Es besteht die Gefahr, dass sie sehr "brüchig" sein können.

Wenn Sie Ihre Tests schreiben, so dass Sie eine bestimmte Zeichenfolge erhalten, und Sie haben einige Helfer, die andere Helfer anrufen. Eine Änderung in einem der Kernhelfer könnte dazu führen, dass sehr viele Tests fehlschlagen.

Es ist also vielleicht besser zu testen, dass Sie einen Nicht-Null-Wert erhalten, oder dass ein bestimmter Text irgendwo im Rückgabewert enthalten ist. Anstatt nach einer genauen Zeichenfolge zu suchen.

Verwandte Themen