In einem Versuch, meine Komponententests zu trocknen, versuche ich AutoFixture als ein IoC-Container zu verwenden, um mein System unter Test (SUT) zu instanziieren, die in diesem speziellen Fall ASP.NET MVC Controller
s sind. Daher möchte ich AutoFixture anpassen, um Controller ohne automatische Eigenschaften zu erstellen.Wie wende ich AutoFixture-Anpassungen an alles an, das von einer Basisklasse erbt?
Ich habe versucht, eine Anpassung für ControllerBase
hinzuzufügen, aber es scheint nicht für Unterklassen von ControllerBase
zu arbeiten.
fixture.Customize<ControllerBase>(c => c.OmitAutoProperties());
Hier ist ein Beispiel für den Test, den ich will schreiben können:
[Theory, AutoFixtureData]
public void ControllerTest(AccountController controller) {
Assert.Equal(default(UrlHelper), controller.Url);
}
Natürlich funktioniert es, wenn ich manuell für jeden spezifischen Controller in meinem Projekt eine Anpassung hinzufügen, aber wer will TU das? Gibt es einen besseren Weg?
Ich benutze http://stackoverflow.com/a/11657881/11635 –