【问题标题】:How to Customize AutoFixture to Return Null Sometimes如何自定义 AutoFixture 有时返回 Null
【发布时间】:2015-11-16 22:20:16
【问题描述】:

在这个示例代码中,我想配置一个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;
}

问题是,每当我的工厂返回null 时,我都会收到InvalidOperationException

装饰的 ISpecimenBuilder 返回的样本与 System.String 不兼容。

这发生在我在工厂内返回null 的任何类型。有什么方法可以配置AutoFixture 为请求的对象返回null

【问题讨论】:

  • 内部 AutoFixture 使用 Guid 作为生成随机字符串的值。我就做这行代码return _createString ? "test" : Guid.Empty.ToString();
  • @CodeNotFound String 只是一个例子,我想要一个空字符串,而不是空字符串或空 guid。我想为几种类型的对象返回 null,因为它在许多测试场景中都是非常有效的测试用例。
  • AutoFixture 是一个自以为是的库,它持有的一种观点是nulls are invalid return values
  • 这看起来像一个错误。将进一步调查...

标签: c# unit-testing autofixture


【解决方案1】:

这是一个缺陷。它应该在AutoFixture 3.36.11 中解决。

【讨论】:

  • 修复已确认。现在可以了。感谢您的快速周转!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
相关资源
最近更新 更多