gpt4 book ai didi

asp.net-mvc - FluentValidation ShouldHaveValidationErrorFor 与 SetCollectionValidator

转载 作者:行者123 更新时间:2023-12-02 14:20:36 37 4
gpt4 key购买 nike

我在 ASP.NET MVC 项目中使用 FluentValidation 库,从 UI 角度来看,它按预期工作。违反规则会显示正确的错误。

我有一个父类,它有一个验证器和一个集合属性,其中该类型有一个验证器。它在概念上与 documentation 中描述的相同。 .

我有一个父类的验证器...

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 : Expected a validation error for property AllergyRowsAdded.

如果我手动 .Validate() 并查看结果,我会看到错误。

有人遇到过这种情况吗?在这种情况下,我需要采取额外的步骤才能使用 ShouldHaveValidationErrorFor 吗?

最佳答案

根据the docs ,还有另一种测试嵌套属性的方法:表示嵌套属性路径的字符串名称:

// You can also use a string name for properties that can't be easily represented with a lambda, eg:
result.ShouldHaveValidationErrorFor("Addresses[0].Line1");

关于asp.net-mvc - FluentValidation ShouldHaveValidationErrorFor 与 SetCollectionValidator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28354857/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com