Wie testen Sie Einheit-ASP.NET Core MVC-Controller, die anonyme Objekte zurückgeben?

8

Ich habe Probleme beim Testen von ASP.NET Core MVC-Controllern, die anonyme Objekte zurückgeben. Der Komponententest wird in einem separaten Projekt eingerichtet und ruft direkt die Controller-Methoden aus dem Hauptprojekt auf.

Die Controller-Methoden geben IActionResult zurück, aber normalerweise sind dies die Objekte OkObjectResult und BadRequestObjectResult , die in eine JSON-Antwort mit dem entsprechenden HTTP-Statuscode übersetzt werden. Die anonymen Objekte werden als Konstruktorparameter für die ObjectResult -Objekte übergeben und ich versuche Assertions gegen diese Objekte zu erstellen (zugänglich über ObjectResult.Value ).

Ich habe diese Frage gefunden ( Wie kann ich auf Internals in zugreifen asp.net 5 ), die eine Antwort hat, die besagt, Dynamik zu verwenden und

hinzuzufügen %Vor%

zu AssemblyInfo.cs, um dem Testprojekt Zugriff auf die internen Objekteigenschaften der anonymen Objekte zu gewähren. Die neuesten Versionen von ASP.NET Core MVC verfügen jedoch nicht über AssemblyInfo.cs und das Hinzufügen eines wie in den Antworten zu der verknüpften Frage vorgeschlagen funktioniert auch nicht.

Gibt es jetzt einen anderen Ort, an dem InternalsVisibleTo hinzugefügt werden kann oder fehlt mir etwas?

    
Jargon 18.07.2016, 14:51
quelle

1 Antwort

16

Ursprüngliche Idee von diese Antwort mit einem allgemeineren Ansatz. Mit einem benutzerdefinierten DynamicObject als Wrapper für die Überprüfung des Werts durch Reflektion war es nicht nötig, InternalsVisibleTo

hinzuzufügen %Vor%

Angenommen, der folgende Controller

%Vor%

Tests könnten aussehen wie

%Vor%     
Nkosi 18.07.2016, 22:10
quelle