Я пытаюсь создать интеграционные тесты, чтобы убедиться, что мои представления не содержат ошибок времени выполнения. Таким образом, мне нужно создать тест, который проверяет, правильно ли работает ViewResult.ExecuteResult ()
, но, похоже, я наткнулся на препятствие.
Я нашел этот сайт , который дал мне отправную точку, и у меня есть следующий код:
[TestMethod]
public void RegisterResultExecutes()
{
//arrange
RequestContext requestContext = new RequestContext(new MockHttpContext(), new RouteData());
AccountController controller = new AccountController
{
FormsService = new MockFormsAuthenticationService(),
MembershipService = new MockMembershipService(),
Url = new UrlHelper(requestContext)
};
var result = controller.Register();
var sb = new StringBuilder();
Mock response = new Mock();
response.Setup(x => x.Write(It.IsAny())).Callback(y =>
{
sb.Append(y);
});
Mock controllerContext = new Mock();
controllerContext.Setup(x => x.HttpContext.Response).Returns(response.Object);
//act
result.ExecuteResult(controllerContext.Object);
}
Проблема в том, что когда вызывается result.ExecuteResult ()
, я получаю следующее исключение
System.NullReferenceException: Object reference not set to an instance of an object.
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
MyApp.Tests.Controllers.AccountControllerTest.RegisterResultExecutes() in C:\Users\KallDrexx\Documents\Projects\MyApp\MyApp.Tests\Controllers\AccountControllerTests.cs: line 297
К сожалению, эта трассировка стека не очень полезна, так как я не уверен, что она пытается получить доступ, что является нулевым. Есть ли у кого-нибудь предложения, как я могу создать тест для ExecuteResult ()
?