Eine Frage, die schon oft gestellt wurde, aber mit einer bestimmten Neigung zur Entwicklung von MVCs.
Ich war ein sehr guter Junge und habe alle meine Controller-Aktionen mit entsprechenden Unit-Tests codiert, was großartig war (wenn sich manchmal ein wenig [viel lesen] wiederholt). Um ehrlich zu sein, habe ich tatsächlich eine kleine T4-Vorlage erstellt, um die meisten Knochen der ersten Komponententests zu schreiben, und sie dann je nach Verwendung entsprechend angepasst. Ich gebe zu, nicht ganz sicher zu sein, wie man Tests in Ansichten behandelt, die Teilansichten enthalten - aber das ist eine Geschichte für eine andere Frage.
Nun ist es für mich schwierig zu entscheiden, wie tief die Abdeckung in meiner Serviceschicht sein sollte. Der Grund dafür ist, dass einige meiner Servicemethoden (zum Guten oder Schlechten) tatsächlich eine Vielzahl von Linq-Abfragen ausführen, die dann der nachfolgenden Logik innerhalb der Methode diskrete Informationen liefern. Ich weiß, dass ich diese Methoden aufschlüsseln könnte (sollte ??), um nur die erforderliche Logik für jede linq-Anweisung aufzurufen und sie dann innerhalb der Methode anzuwenden. In vielen Fällen gibt es jedoch nie eine Wiederverwendung der linq-Funktionen, und daher scheint dies den Code eine Ebene zu weit zu überarbeiten.
Ich frage, ob komplexe Logik innerhalb einer Methode "gut genug" ist, um eine Testmethode zu haben, die einfach das erforderliche Ergebnis und / oder den erwarteten Fehler bestätigt, oder ob jede Logikzeile gleichzeitig ausgeführt und getestet werden sollte. So wie ich es sehe, um die Tests korrekt durchzuführen, sollte die Methodenlogik (Zeile für Zeile) auch eine gewisse Abdeckung erhalten. Dies könnte jedoch (meiner naiven Meinung nach) zu einem nie endenden Zyklus führen, in dem versucht wird, den Test und die implementierte Methode so eng aufeinander abzustimmen (was ich weiß, dass sie sein sollten), dass in den Tests selbst eine Heimindustrie entsteht.
Ich weiß, dass meine Frage einige der TDD-Anhänger beleidigen kann, die dies als Kinderspiel ansehen werden. Da ich nicht im TDD-Lager bin, ist dies für mich ein "Ja-Klacks", daher die Frage.
Übrigens - hatte dies auf Ideen überprüft:
Ich freue mich jetzt auf die stetigen Abstimmungen :)
[edit] - zum Wohle des Single (na ja im Moment Single !!) 'enger' Wähler. Diese Frage ist nicht subjektiv. Ich bin auf der Suche nach einem Konsens über ein sehr fokussiertes Thema. Ich versuche nicht, negative Leidenschaften zu wecken, ich versuche nicht, Fehler in der Technologie aufzudecken - ich bin ein RIESIGER Fan. Bitte hinterlassen Sie einen höflichen Kommentar zu meinem Vorteil, wenn Sie abstimmen, da dies mir helfen kann, die Frage neu zu strukturieren, wenn Unklarheiten oder Fehlinformationen vorliegen. Diese Frage könnte einem großen Teil der MVC-Bevölkerung zugute kommen.
Danke!!
Jim