Ich versuche, einen Test für einige unserer Webapi-Aufrufe zu erstellen, und habe Schwierigkeiten beim Zugriff auf die Ergebnisse. In allen Beispielen, die ich gesehen habe, benutzten sie OkNegotiatedContentResult. Das Problem ist, dass wir in unseren Web-API-Aufrufen die Daten oft in anonyme Objekte verpacken, so dass wir Datensätze kombinieren können. Ich übersehe wahrscheinlich etwas Offensichtliches, aber ich kann nicht den richtigen Weg finden, die Ergebnisinformationen zu überprüfen, um sie zu validieren.
WebApi-Snippet
%Vor%API-Test-Snippet
%Vor%Wie kann ich die Ergebnisse mit dem OkNegoatedContentResult überprüfen, wenn ein anonymer Typ beteiligt ist?
Der Grund für die Probleme mit anonymen Typen ist, dass es sich um interne Typen handelt und nicht um öffentliche Typen, daher können Ihre Tests diese nicht verwenden.
Wenn Sie Ihrem Webapi-Projekt ein InternalsVisibleTo-Attribut hinzufügen, können Sie dann das Ergebnis und seinen Inhalt über Dynamic referenzieren, zB:
%Vor%Anonyme Objekte befinden sich in der Assembly, die sie erstellt hat. Wenn Sie Komponententests in einer getrennten Assembly (DLL) durchführen, müssen Sie explizit angeben, dass Sie interne Werte mit dieser Assembly unter Verwendung des InternalsVisibleTo-Attributs teilen möchten.
Patrick hat herausgefunden, warum Sie einen Fehler erhalten. "'object' enthält keine Definition für 'Inhalt'". Der vom SUT generierte anonyme Typ ist intern. Teilen Interna mit dem Testprojekt und Sie sollten in der Lage sein, den anonymen Typ zu überprüfen, indem Sie so etwas in der AssemblyInfo.cs im Projekt tun: getestet werden
%Vor%Gefunden im Artikel hier Ссылка
Tags und Links asp.net-web-api c# anonymous-types