Ich habe eine Reihe von funktionierenden imperativen Code im Test und ich versuche es auf eine essentielle Testkonvention herunterzukochen.
Mein Test sieht wie folgt aus:
%Vor% Ich habe auch eine Anpassung, die dies ermöglicht, indem Sie die HttpConfiguration
und HttpRequestMessage
auf Standard-Nicht-Null-Werte setzen.
Zuerst sieht das hässlich aus, aber wenn ich Build & lt; & gt; (). omit (). mit (config) .with (request) verwende, wird die Auto-Anpassung, die zum Erstellen dieser Instanzen benötigt wird, abgeschaltet. p>
Zweitens funktioniert dies nur für einen SiteVersionController. Ich würde das lieber für all meine ApiControllers verallgemeinern (vielleicht ist das eine schlechte Idee, aber ich werde es erst wissen, wenn ich es versuche).
Im Wesentlichen wäre meine Konvention wie folgt: erstellt für alle ApiControllers diese ohne automatische Eigenschaften, setzt jedoch die http-Konfigurations- und Anforderungsnachrichteneigenschaften auf Standardwerte ungleich Null
ApiControllers
sind ziemlich schwierig zu verkabeln, weil Sie ihnen bestimmte Eigenschaften zuweisen müssen, damit alles funktioniert. Zumindest müssen Sie die Eigenschaft Request
zuweisen, da andernfalls Controller
Request.CreateResponse
nicht aufrufen kann. Daher ist das Deaktivieren der automatischen Eigenschaften für ApiController
Instanzen keine gute Strategie. Stattdessen können Sie AutoFixture so konfigurieren, dass HttpRequestMessage
Instanzen korrekt verdrahtet werden.
Web-API 1
Mit ASP.NET Web API 1 verwende ich normalerweise eine Anpassung wie folgt:
%Vor% Da auto-properties standardmäßig aktiviert sind, wird dies eine passende Instanz von HttpRequestMessage
zu ApiController.Request
zuweisen. Zusammen mit einem Auto-Mocking Anpassung kann Fixture
nun Instanzen von allen erstellen ApiController
classes.
Web-API 2
Mit ASP.NET Web API 2 (5.0.0.0) sind die Dinge ein wenig komplizierter, aber mit ein wenig Versuch und Irrtum habe ich diese Anpassung 808 Tests bestanden:
%Vor%Konventionen
Wenn Sie das in ein [AutoData]
-Attribut verpacken, sollten Sie in der Lage sein, Ihren Test auf Folgendes umzuformen:
Tags und Links c# autofixture