Sicherstellen, dass eine Ansicht existiert

7

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:

  • rufen Sie die Methode 'Login' auf dem Controller
  • auf
  • Bestätigen Sie, dass eine Ansicht gerendert wird (indem Sie überprüfen, ob ein ViewResult-Objekt zurückgegeben wird)
  • Bestätigen Sie, dass die richtige Ansicht wiedergegeben wird (indem Sie den Ansichtsnamen überprüfen)

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:

  • Soll ich diesen Test aufteilen?
  • Sollte ich es umbenennen (wie, irr, LoginRendersCorrectView oder etwas)

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.

    
Erik van Brakel 30.01.2009, 00:40
quelle

5 Antworten

9
  • 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.

    
Jason Livesay 01.02.2009, 00:58
quelle
5

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 .

    
Craig Stuntz 05.02.2009 14:12
quelle
4

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.

    
alyssackwan 04.02.2009 19:34
quelle
1

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.

    
Florin Sabau 05.02.2009 23:46
quelle
0

Wenn Sie eine Beta-Version verwenden, wird Ihre Code-Behind-Datei eine Klasse für die View erstellen, die Sie mit Reflection überprüfen können.

Andernfalls können Sie prüfen, ob die Datei am richtigen Ort existiert.

    
ajma 30.01.2009 06:46
quelle

Tags und Links