gpt4 book ai didi

AutoFixture 和自定义数据注释

转载 作者:行者123 更新时间:2023-12-04 14:27:37 25 4
gpt4 key购买 nike

我在我的单元和集成测试中使用 AutoFixture 并遇到了问题。我正在生成数据传输对象,其中一些类在属性上具有 DataAnnotation 属性(其中一些是自定义的)。 AutoFixture 看到这些并且不为它们生成数据,大概是因为它不确定它期望什么数据。
我正在使用的自定义验证属性示例:

public class Person 
{
public string FullName { get; set; }

[Enum("M", "F")]
public string Gender { get; set; }
}

public class EnumAttribute : ValidationAttribute
{
public EnumAttribute(params string[] allowedStrings)
{
if (allowedStrings == null || allowedStrings.Length == 0)
throw new ArgumentException("allowedStrings");
AllowNull = true;
AllowedStrings = allowedStrings;
ErrorMessage = "The field '{0}' is invalid. Allowed strings are " + string.Join(", ", AllowedStrings);
}

// ... implementation
}
它只是将提供的字符串限制为某个值(由于其他原因,我不能直接使用枚举)。
如何自定义 AutoFixture 以创建适当的数据?

最佳答案

目前,AutoFixture 支持以下验证属性:

  • RangeAttribute
  • RegularExpressionAttribute
  • StringLengthAttribute

  • 要支持自定义验证属性,您必须从以下组之一进行推断:
  • RangeAttributeRelay , RangedNumberRequest , RangedNumberGenerator
  • RegularExpressionAttributeRelay , RegularExpressionRequest , RegularExpressionGenerator
  • StringLengthAttributeRelay , ConstrainedStringRequest , ConstrainedStringGenerator

  • 然后,您必须将新创建的 Relay 和 Generator 类添加为 Customizations .

    关于AutoFixture 和自定义数据注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25147712/

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