Мне трудно найти информацию о том, что, как я ожидаю, будет довольно простым сценарием. Я пытаюсь выполнить модульное тестирование действия на моем контроллере ASP.NET Mvc 2, который использует пользовательскую модель ввода с данными DataAnnotions. Моя среда тестирования - xUnit, как упоминалось в заголовке.
Вот мой пользовательский Модель ввода :
public class EnterPasswordInputModel
{
[Required(ErrorMessage = "")]
public string Username { get; set; }
[Required(ErrorMessage = "Password is a required field.")]
public string Password { get; set; }
}
А вот и мой Контроллер (вытащил некоторую логику для упрощения этого примера.):
[HttpPost]
public ActionResult EnterPassword(EnterPasswordInputModel enterPasswordInput)
{
if (!ModelState.IsValid)
return View();
// do some logic to validate input
// if valid - next View on successful validation
return View("NextViewName");
// else - add and display error on current view
return View();
}
А вот мой xUnit Fact (также упрощенный):
[Fact]
public void EnterPassword_WithValidInput_ReturnsNextView()
{
// Arrange
var controller = CreateLoginController(userService.Object);
// Act
var result = controller.EnterPassword(
new EnterPasswordInputModel
{
Username = username, Password = password
}) as ViewResult;
// Assert
Assert.Equal("NextViewName", result.ViewName);
}
Когда я запускаю тест, я получаю следующую ошибку в моем факте теста при попытке получить результат контроллера (раздел Act):
System.NullReferenceException: Object reference not set to an instance of an object.
Заранее благодарим за любую помощь, которую вы можете предложить!