Ich untersuche gerade Unit-Tests für eine neue Anwendung, die ich erstellen muss. Ich habe die grundlegenden Tests gut gemacht (Testen der ActionResult-Klassen ist ziemlich nett). Eine Sache, die ich sicherstellen möchte, ist, dass eine Ansichtsseite in meiner Lösung existiert. Ich bin nicht 100% sicher, dass mein Test korrekt ist, also, wenn jemand Vorschläge hatte, bitte zögern Sie nicht!
Dies ist ein Test, den ich überprüfen muss, dass meine Login-Methode auf meinem Sicherheits-Controller das Richtige tut:
%Vor%Meine Erklärung des Tests wäre:
Was ich gerne hätte, wäre eine dritte Behauptung, um zu sehen, ob die zu rendernde Ansicht tatsächlich existiert.
Einige sekundäre Fragen, die ich habe, wären:
Danke!
Hinweis: Ich versuche explizit, das Dateisystem nicht überprüfen zu müssen. Ich hoffe irgendwie auf eine Möglichkeit, die ViewEngine zu verwenden, um zu bestätigen, dass die Ansicht tatsächlich existiert.
Nein, ich denke nicht, dass Sie den Test aufteilen sollten, solange es nur eine dritte Behauptung und nicht viel mehr Code gibt.
Ja, ich denke, ein aussagekräftigerer Name wäre hilfreich.
Da Sie bereits verifiziert haben, dass der Name der richtigen Ansicht bereits vorhanden ist, wird die Ansicht nicht einfach erfolgreich gerendert, um die Existenz der Ansicht zu überprüfen?
Ich denke, es ist großartig, dass Sie an einer vollständigen Testabdeckung arbeiten, aber hier habe ich das Gefühl, dass Ihre Zeit effektiver genutzt werden könnte, wenn Sie zu dem Teil wechseln könnten, in dem Sie die Einheiten überprüfen, die die tatsächlichen Spezifikationen erfüllen Login-Funktionen (z. B. die Überprüfung von Passwort-Hashes oder was auch immer) funktionieren korrekt.
Zu wissen, dass die Ansicht in der Lösung existiert, ist nicht besonders nützlich. Was Ihnen wirklich wichtig ist, ist, dass die Ansicht bereitgestellt wird, da Ihre Benutzer (hoffentlich) Ihre Site nicht in Visual Studio ausführen. Mit anderen Worten, was Sie verlangen, ist kein Komponententest, sondern ein Integrationstest. Daher sollten Sie ein geeignetes Tool für den Job verwenden. Betrachten Sie ein Web-Test-Framework wie Selenium .
Ich stimme Jason vollkommen zu, aber ich glaube nicht, dass das, was Sie zu tun versuchen, tatsächlich zur Testabdeckung beiträgt. Schließlich wird das Rendering und das Testverhalten bereits abdecken, ob es existiert oder nicht.
Viele Entwickler gehen über Bord, wenn sie von dem Test-Driven-Development-Bug gebissen werden. Sie wollen Testfehler, um ihnen genau zu sagen, was falsch ist, also müssen sie nicht graben und debuggen. Das ist nicht der primäre Zweck des Testens; Testen dient zum Überprüfen des korrekten Verhaltens, so dass Sie keine schlechte Software versenden. Wenn etwas nicht stimmt, können Sie debuggen. Es ist nicht notwendig, ein Test-Netzwerk so spezifisch zu gestalten, dass die Test-Engine genau weiß, um welches Problem es sich handelt.
Sie könnten versuchen, die FindView-Methode des ViewEngineCollection-Objekts in ViewResult zu verwenden, um zu überprüfen, ob das MVC-Framework die Ansicht finden kann.
Wie andere vorgeschlagen haben, denke ich, dass diese 3. Behauptung (dass die Ansicht tatsächlich existiert) nichts ist, was Ihren Tests einen echten Wert hinzufügen würde, aber dennoch, hier ist der Code, um auf Existenz zu prüfen:
%Vor%Hoffe, das hilft.
Tags und Links asp.net-mvc unit-testing