我很难找到关于我期望是一个非常简单的场景的信息。我正在尝试对我的 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]
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.
提前感谢您提供的任何帮助!