Я использую FluentValidation в своем проекте MVC и имею следующую модель и валидатор:
[Validator(typeof(CreateNoteModelValidator))]
public class CreateNoteModel {
public string NoteText { get; set; }
}
public class CreateNoteModelValidator : AbstractValidator<CreateNoteModel> {
public CreateNoteModelValidator() {
RuleFor(m => m.NoteText).NotEmpty();
}
}
У меня есть действие контроллера для создания заметки:
public ActionResult Create(CreateNoteModel model) {
if( !ModelState.IsValid ) {
return PartialView("Test", model);
// save note here
return Json(new { success = true }));
}
Я написал модульный тест для проверки поведения:
[Test]
public void Test_Create_With_Validation_Error() {
// Arrange
NotesController controller = new NotesController();
CreateNoteModel model = new CreateNoteModel();
// Act
ActionResult result = controller.Create(model);
// Assert
Assert.IsInstanceOfType(result, typeof(PartialViewResult));
}
Мой модульный тест не пройден, так как в нем нет ошибок проверки. Это должно произойти, потому что model.NoteText имеет значение null, и для этого есть правило проверки.
Похоже, что FluentValidation не работает, когда я запускаю тест моего контроллера.
Я попытался добавить в свой тест следующее:
[TestInitialize]
public void TestInitialize() {
FluentValidation.Mvc.FluentValidationModelValidatorProvider.Configure();
}
У меня есть такая же строка в моем Global.asax, чтобы автоматически связать валидаторы с контроллерами ... но она не работает в моем модульном тесте.
Как мне заставить это работать правильно?