gpt4 book ai didi

c# - 灯具对属性自动生成的约束

转载 作者:行者123 更新时间:2023-12-04 18:18:13 26 4
gpt4 key购买 nike

我有一个包含char属性的对象。对于我的测试,我需要将该属性设置为除I或R以外的任何值。理想情况下,AutoFixture是否具有 native 可以做的任何事情来使代码比我想出的更简洁,更简短?

这是对象的表示

public class MyObject
{
public char MyProperty {get; set;}
}

而我正在使用的解决方案
MyObject = _fixture.Create<MyType>();
if ((new char[] { 'I', 'R' }).Contains(MyObject.MyProperty))
MyObject.MyProperty = new Generator<char>(_fixture).Where(c => !new char[] { 'I', 'R' }.Contains(c)).First();

最佳答案

只要您愿意创建一个可接受字符的黑名单,而不是黑名单,ElementsBuilder似乎是一个不错的选择。

这是一个使用MyObject定义的快速示例。

var fixture = new Fixture();

// A-Z, minus I, R.
fixture.Customizations.Add(new ElementsBuilder<char>("ABCDEFGHJKLMNOPQSTUVWXYZ"));

var createdCharacters = fixture
.Create<Generator<MyObject>>()
.Take(1000)
.Select(f => f.MyProperty)
.ToList();

CollectionAssert.DoesNotContain(createdCharacters, 'I');
CollectionAssert.DoesNotContain(createdCharacters, 'R');

如果您需要更多细微差别(例如,其他对象可以使用I或R字符),则可以使用自定义 ISpecimenBuilder

关于c# - 灯具对属性自动生成的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59198911/

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