"dynamisches" Schlüsselwort und JSON-Daten

8

Eine Aktionsmethode in meiner ASP.NET MVC2-Anwendung gibt ein JsonResult-Objekt zurück und in meinem Komponententest möchte ich überprüfen, ob das zurückgegebene JSON-Objekt tatsächlich die erwarteten Werte enthält.

Ich habe es versucht:

%Vor%

Aber ich bekomme eine RuntimeBinderException "'Objekt' enthält keine Definition für 'ErrorLevel'".

Wenn ich jedoch in Zeile 2 einen Haltepunkt platziere und die dynamische Variable json überprüfe (siehe Bild unten), enthält offensichtlich die ErrorLevel-Zeichenfolge und hat den erwarteten Wert, also wenn die Laufzeit Binder spielte nicht lustig, der Test würde passieren.

Was bekomme ich nicht? Was mache ich falsch und wie kann ich das beheben? Wie kann ich die Behauptung bestehen lassen?

    
Peter Perháč 06.01.2011, 11:22
quelle

2 Antworten

15

Sie brauchen nicht wirklich dynamisch. Hier ist ein Beispiel. Angenommen, Sie hatten die folgende Aktion, die Sie testen möchten:

%Vor%

und der entsprechende Test:

%Vor%

Vielleicht finden Sie auch den folgenden Blog-Beitrag .

    
Darin Dimitrov 06.01.2011, 11:53
quelle
2

Die Eigenschaft Data von JsonResult hat den Typ Object . Dies bedeutet, obwohl Sie eine dynamische Deklaration haben, ist der Typ, der gesetzt ist, immer Object . Das andere Problem besteht darin, dass Sie einen anonymen Typ als Data verwenden und dann versuchen, darauf als deklarierte Instanz zuzugreifen, die außerhalb des gültigen Bereichs liegt. Verwenden Sie @ Darins Technik für den Zugriff auf die Eigenschaftswerte mit RouteValueDictionary .

    
Matthew Abbott 06.01.2011 12:02
quelle