2017-04-26 1 views
0

Ich erhalte eine Fehlermeldung versucht, Unit-Test ein JsonResult in meiner MVC.Net Anwendung helfen.Ich brauche Unit Testing JsonResults in MVC.Net Website

Ich sehe, dass ich Daten ist Abrufen in meinem Test dynamisch verwenden, aber wenn ich eine Assert.AreEqual bekomme ich einen Fehler.

Was mache ich falsch? Wie kann ich das beheben?

ich den Code enthalten habe ich als Fehler als auch in meinem Unit-Test verwenden, die ich (siehe Bilder unten) bin immer:

CODE IN UNIT Test verwendet

[TestMethod] 
    public void getStatusesInfoTESTTest() 
    { 
     const int statusID = 12; 
     MasterDataController controller = new MasterDataController(); 
     var result = controller.getStatusInfoTEST(statusID) as JsonResult; 
     dynamic data = result.Data; 
     Assert.AreEqual("TESTING 123", data.MasterDataDescription); 
    } 

ERROR iCH:

IMAGE OF ERROR I GET

Fehlermeldung:

Eine Ausnahme vom Typ 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' aufgetreten in System.Core.dll wurde aber in Benutzercode

BILD DER DATA I GET BACK nicht behandelt IMAGE OF RETURNED DATA

Danke für Ihre Hilfe, mrotor

+1

Zeigen Sie die zu testende Methode an. 'getStatusInfoTEST' sind die Daten ein konkreter Typ oder ein anonymer Typ? – Nkosi

Antwort

0

Sie Ihre Controller Protokoll extrahieren sollte ic zu irgendeiner Form von Dienstklasse. Dies erleichtert das Testen von Einheiten erheblich.

Der Controller nur konzentrieren sollte den Dienst des Rohwert (wahrscheinlich ein Wörterbuch oder IList oder was auch immer) und abstrakt in das JSON-Objekt auf nehmen.

Dann können Sie einfach konzentrieren sich auf Gerät den Service viel einfacher zu testen.

Ich habe immer der Meinung gewesen, dass, wenn Sie Einheit sind Testen Kontrolleurs, du bist es falsch zu machen. Modelle und Dienste sollten Unit-getestet werden, Controller nur die beiden zusammen binden, aber sollten nichts mit testbar haben, da ihre Logik implizit ist.

Dies hilft Ihnen, Ihre Schichten entwirren.