Как я могу получить модель из ViewResult в модуле тестирования asp.net MVC? - PullRequest
4 голосов
/ 22 апреля 2010

я вызываю действие контроллера в модульном тесте.

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

Я приведу результат к ViewResult, потому что это то, что я возвращаю в контроллере:

return View(model);

Но как я могу получить доступ к этой переменной модели в моем модульном тесте?

Ответы [ 2 ]

9 голосов
/ 22 апреля 2010
// Arrange
var c = new MyController();

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

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

Доброжелательность, Dan

4 голосов
/ 22 апреля 2010

Я бы порекомендовал вам отличный помощник по тестированию MVContrib . Ваш тест может выглядеть так:

[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
}

Вы также можете заявить о свойствах модели

actual
    .AssertViewRendered()
    .WithViewData<SomeViewData>()
    .SomeProp
    .ShouldEqual("some expected value");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...