Asp.net core AutoFixture有时无法为标记为RangeAttribute的特性生成值
目前我的测试代码中有一个非常奇怪的行为。。。这一切都是从使用Asp.net core AutoFixture有时无法为标记为RangeAttribute的特性生成值,asp.net-core,autofixture,nsubstitute,Asp.net Core,Autofixture,Nsubstitute,目前我的测试代码中有一个非常奇怪的行为。。。这一切都是从使用RangeAttribute装饰字符串属性开始的。我正在ASP.NET核心中使用验证器类进行单元测试模型验证,因此在下面的示例中MyClass是一个请求对象 据我所知,AutoFixture将考虑属性标记的属性。这是(伪)代码的样子: private void RunTest() { var sut = Fixture.Freeze<MyClass>(); su
RangeAttribute
装饰字符串属性开始的。我正在ASP.NET核心中使用验证器
类进行单元测试模型验证,因此在下面的示例中MyClass
是一个请求对象
据我所知,AutoFixture将考虑属性标记的属性。这是(伪)代码的样子:
private void RunTest()
{
var sut = Fixture.Freeze<MyClass>();
sut.MyPropery = "12345";
// all tests from here on fails randomly
}
private class MyClass
{
[Required]
[Range(10000, 99999)]
public string MyPropery { get; set; }
}
private void RunTest()
{
var sut=Fixture.Freeze();
sut.MyPropery=“12345”;
//从此以后的所有测试都会随机失败
}
私有类MyClass
{
[必需]
[范围(1000099999)]
公共字符串MyProperty{get;set;}
}
有时,生成的值是10000(woho!),有时我会出现以下错误,我不确定原因:
AutoFixture无法从中创建实例
Ploeh.AutoFixture.Kernel.RangedNumber请求,很可能是因为
没有公共构造函数,是抽象或非公共类型
我正在使用“AutoFixture.AutoNSubstitute”编写一个单元测试:“3.49.0”
您知道这里可能有什么问题吗?这对实际情况是否正确?是否可以提供一个复制此行为的示例?@SergeyShushlyapin您的意思是什么?@NikosBaxevanis使用一些示例代码更新了
[Range]
属性应用于字符串属性的预期行为是什么?