如何编写Autofixture定制以更改特定类型的收集行为

时间:2019-05-27 00:35:37

标签: autofixture

IEnumerable<T>的Autofixture的默认行为是用三个项目填充它。我定义了从IEnumerable<T>继承的通用结构。

我想更改自动定位的行为,以便对于任何MyStruct<T>,它仅填充一项而不是3,而其他所有IEnumerable<T>的默认行为则保持不变

我可能应该补充一点,默认构造函数采用IEnumerable<T>并将其内部设置为只读私有字段。正是这个构造函数参数由Autofixture提供了3个值,而这正是我想要提供的3个值。

示例:

public struct MyStruct<T> : IEnumerable<T>
{
    private readonly IEnumerable<T> _input;

    // make Autofixture supply only one item here
    // else make Autofixture supply default three items
    public MyStruct(IEnumerable<T> input)
    {
        _input = input;
    }

    public IEnumerator<T> GetEnumerator()
    {
        return _input.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

0 个答案:

没有答案