目前我们正在建立一个新项目,并希望使用 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)