0
这是对这个跟进:测试控制器方法+ DataAnnotations - asp.net的MVC 3
这是测试基于DataAnnotations验证是否在控制器工作的好方法:
[Test]
public void UserController_CannotCreateUserWithNoLastName()
{
// Arrange
var user = new CreateUserViewModel();
UsersController controller = new UsersController();
var validationContext = new ValidationContext(user, null, null);
var validationResults = new System.Collections.Generic.List<ValidationResult>();
Validator.TryValidateObject(user, validationContext, validationResults);
foreach (var validationResult in validationResults)
{
controller.ModelState.AddModelError("", validationResult.ErrorMessage);
}
// Act
var result = controller.CreateUser(user);
// Assert
Assert.IsFalse(controller.ModelState.IsValid);
}
任何改进建议将非常受欢迎。我也想知道是否通常为每个验证/业务规则写一个测试。谢谢!
谢谢。你写的是有道理的,是的,我的代码受到你在第一个问题中提到的链接的启发。你的测试非常细致。你认为我在做什么是错误的 - 将控制器方法看作是一个单元,我通过的视图模型违反了某些业务规则?你将不得不编写测试来检查你的控制器,但我不会。任何反馈欢迎... – cs0815
我不一定看到它有什么问题。你上面的内容不是测试任何一个特定的状态或预期的错误(这是我想指出的一件事,看看测试方法的标题;你确定*这就是测试?它可能会做更多)。它正在看一切。就个人而言,我想要特定的测试来测试每个单独的注释或可能的错误状态,但是如果您对稍微更通用的测试例程感到满意,那也可以。 – Khepri