Я использую библиотеку FluentValidation в проекте ASP.NET MVC, и с точки зрения пользовательского интерфейса она работает так, как ожидалось. Нарушения правил отображают правильные ошибки.
У меня есть родительский класс с валидатором и свойством коллекции, где у этого типа есть валидатор. Концептуально это то же самое, что описано в документации.
У меня есть валидатор для родительского класса...
public class MyFormValidator : AbstractValidator<MyFormViewModel>
...и у меня есть коллекция в MyFormViewModel
...
public IList<ChildRow> ChildRowsAdded { get; set; }
... и я создаю валидатор для коллекции этого дочернего класса...
public class ChildRowValidator : AbstractValidator<ChildRow>
... и я использую этот дочерний валидатор в родительском валидаторе...
RuleFor(m => m.ChildRowsAdded).SetCollectionValidator(new ChildRowValidator());
При написании некоторых модульных тестов я заметил, что ShouldHaveValidationErrorFor
не подтверждает наличие ошибок.
_validator.ShouldHaveValidationErrorFor(x => x.ChildRowsAdded, model);
Эта строка в моем тесте, похоже, не видит ошибок. Тест не пройден, и в сообщении говорится
FluentValidation.TestHelper.ValidationTestException: ожидается ошибка проверки для свойства AllergyRowsAdded.
Если я вручную .Validate()
и смотрю на результаты, я вижу ошибку.
Кто-нибудь сталкивался с этим раньше? Есть ли дополнительный шаг, который мне нужно предпринять, чтобы использовать ShouldHaveValidationErrorFor
в этой ситуации?
validator.ShouldHaveValidationErrorFor(m => m.Childs[0].Name, model);
, но это тоже не работает. Когда я просмотрел исходные коды FluentValidation, мне показалось, что использоватьShouldHaveValidationErrorFor
assert для этого типа теста невозможно. - person Lukas.Navratil   schedule 06.02.2015