小编Mar*_*rco的帖子

记录中的数据注释在单元测试中失败

目前我们正在建立一个新项目,并希望使用 C# 9 中引入的新记录。我们遇到了在单元测试期间未触发记录(构造函数)内的 DataAnnotations 的问题。

现在,在调用控制器时会触发 DataAnnotation,但是当我尝试在单元测试中模拟它时(请参阅下面的代码),它永远不会返回任何错误。

        //Unit Testing ASP.NET DataAnnotations validation
        //http://stackoverflow.com/questions/2167811/unit-testing-asp-net-dataannotations-validation
        protected static IList<ValidationResult> ValidateModel(object model)
        {
            var validationResults = new List<ValidationResult>();
            var ctx = new ValidationContext(model, null, null);
            Validator.TryValidateObject(model, ctx, validationResults, true);
            return validationResults;
        }
Run Code Online (Sandbox Code Playgroud)

目前我们创建了一个解决方法:

    public record FooRecord(string BarProperty)
    {
        [Required]
        public string BarProperty { get; init; } = BarProperty;

    }
Run Code Online (Sandbox Code Playgroud)

但我希望有人知道为什么会发生这种情况,并且也许知道如何使用简写语法来解决这个问题:

    public record FooRecord([Required] BarProperty){ }
Run Code Online (Sandbox Code Playgroud)

c# record xunit .net-5 c#-9.0

4
推荐指数
1
解决办法
2291
查看次数

标签 统计

.net-5 ×1

c# ×1

c#-9.0 ×1

record ×1

xunit ×1