Представление, возвращаемое из действия mvc, пустое с использованием moq - PullRequest
1 голос
/ 29 октября 2010

В теме все сказано.

Я предполагаю, что это из-за некоторых отсутствующих настроек, связанных с MVC, но я очень новичок в мире http, asp.net и mvc, поэтому яЯ не совсем уверен, что не так.

public class MyController : Controller {
    public ActionResult MyAction(MyModel model) {
        return View(model);
    }
}

var controllerMock  = new Mock<MyController>() {
    CallBase = true // without this, the call to View(model) returns null
};


/*
 * I've also tried this before calling the action:
 * 
 * controllerMock.SetFakeControllerContext();
 *
 * from http://www.hanselman.com/blog/ASPNETMVCSessionAtMix08TDDAndMvcMockHelpers.aspx
 * But the same applies.
 **/

ViewResult result = controllerMock.Object.MyAction(new MyModel()) as ViewResult;
Assert.AreEqual("MyAction", result.ViewName); // ViewName etc is blank

1 Ответ

2 голосов
/ 29 октября 2010

Если вы используете mvccontrib для своих тестов, вы можете попробовать что-то вроде этого:

var controller = new MyController();
var builder = new TestControllerBuilder();
builder.InitializeController(controller);

var actionResult = controller.MyAction(new MyModel());
ViewResult viewResult = actionResult.AssertViewRendered().ForView("");
//or
ViewResult viewResult = actionResult.AssertViewRendered().ForViewOrItself("MyAction");
...