【发布时间】:2018-10-08 20:41:32
【问题描述】:
我有以下单元测试:
[TestMethod]
public void GivenInvalidUrlExpectInvalidModelState()
{
//Arrange
HomeController homeController = new HomeController();
InputFields inputFields = new InputFields { Url = "google.com/", KeyWords = "some key words" };
//Act
ViewResult actionResult = homeController.GetResults(inputFields);
//Assert
Assert.IsFalse(actionResult.ViewData.ModelState.IsValid);
}
还有以下型号:
public class InputFields
{
[Url]
[Required(ErrorMessage="Please provide a URL")]
public string Url { get; set; }
[Required(ErrorMessage="Please provide key words")]
public string KeyWords { get; set; }
}
当我从 UI 中使用无效 URL(无协议)(例如 google.com/)点击控制器时,ModelState 按预期为假。
但在单元测试中,ModelState 为真。
为什么模型没有在单元测试中得到验证?
【问题讨论】:
-
这些属性由 asp.net mvc 框架在运行时通过管道进行评估。运行单元测试时,没有管道,因此某些期望不适用。你必须自己操纵状态
标签: c# asp.net-mvc unit-testing modelstate