4 Stimmen

Wie kann ich das Modell von einem ViewResult in einem asp.net mvc Unittest erhalten?

Ich rufe eine Controller-Aktion in einem Unit-Test auf.

 ViewResult result = c.Index(null,null) as ViewResult;

Ich caste das Ergebnis zu einem ViewResult, denn das ist, was ich in den Controller zurückgeben werde:

return View(model);

Aber wie kann ich auf diese Modellvariable in meinem Unit-Test zugreifen?

9voto

Daniel Elliott Punkte 22239
// Arrange
var c = new MyController();

//Act
var result = c.Index(null,null);
var model = result.ViewData.Model; 

//Assert
Assert("model is what you want");

4voto

Darin Dimitrov Punkte 990883

Ich empfehle Ihnen die ausgezeichnete MVContrib Test-Helfer . Ihr Test könnte folgendermaßen aussehen:

[TestMethod]
public void SomeTest()
{
    // arrange
    var p1 = "foo";
    var p2 = "bar";

    // act
    var actual = controller.Index(p1, p2);

    // assert
    actual
        .AssertViewRendered() // make sure the right view has been returned
        .WithViewData<SomeViewData>(); // make sure the view data is of correct type
}

Sie können sich auch auf Eigenschaften des Modells berufen

actual
    .AssertViewRendered()
    .WithViewData<SomeViewData>()
    .SomeProp
    .ShouldEqual("some expected value");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X