C# 如何自定义AutoFixture以有时返回Null
在这个示例代码中,我想将C# 如何自定义AutoFixture以有时返回Null,c#,unit-testing,autofixture,C#,Unit Testing,Autofixture,在这个示例代码中,我想将Fixture对象配置为在一半时间内为字符串返回null void Test() { var fixture = new Fixture(); fixture.Customize<string>(x => x.FromFactory(CreateString)); var str1 = fixture.Create<string>(); //error occurs here when string sh
Fixture
对象配置为在一半时间内为字符串返回null
void Test()
{
var fixture = new Fixture();
fixture.Customize<string>(x => x.FromFactory(CreateString));
var str1 = fixture.Create<string>();
//error occurs here when string should come back null
var str2 = fixture.Create<string>();
}
bool _createString = false;
string CreateString()
{
_createString = !_createString;
return _createString ? "test" : null;
}
void测试()
{
var fixture=新fixture();
fixture.Customize(x=>x.FromFactory(CreateString));
var str1=fixture.Create();
//当字符串返回null时,此处发生错误
var str2=fixture.Create();
}
bool _createString=false;
字符串CreateString()
{
_createString=!\u createString;
返回_createString?“测试”:空;
}
问题是,每当我的工厂返回null
,我就会得到一个invalidoOperationException
:
由ISpecimenBuilder返回的样本与System.String不兼容
对于在工厂中返回
null
的任何类型,都会发生这种情况。有没有办法将AutoFixture
配置为对请求的对象返回null
?这是一个缺陷。它应该在中解决。内部自动夹具使用Guid作为生成随机字符串的值。我将只执行这行代码return\u createString?“test”:Guid.Empty.ToString()
@CodeNotFoundString
只是一个例子,我想要一个空字符串,而不是空字符串或空guid。我想为几种类型的对象返回null,因为它在许多测试场景中都是非常有效的测试用例。AutoFixture是一个固执己见的库,它持有的观点之一是。这看起来像一个bug。将进一步调查…修复已确认。现在可以了。谢谢你的快速周转!