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