Как настроить AutoFixture, чтобы он иногда возвращал значение null

В этом примере кода я хочу настроить объект 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 для запрошенного объекта?


person Nathan A    schedule 09.11.2015    source источник
comment
Внутри AutoFixture использует Guid в качестве значения для генерации случайной строки. Я просто сделаю эту строку кода return _createString ? "test" : Guid.Empty.ToString();   -  person CodeNotFound    schedule 10.11.2015
comment
@CodeNotFound String был просто примером, и мне нужна нулевая строка, а не пустая строка или пустой идентификатор. Я хочу вернуть null для нескольких типов объектов, так как это очень правильный тестовый пример во многих тестовых сценариях.   -  person Nathan A    schedule 10.11.2015
comment
AutoFixture — это самоуверенная библиотека, и одно из ее мнений состоит в том, что нулевые значения являются недопустимыми возвращаемыми значениями.   -  person Nikos Baxevanis    schedule 10.11.2015
comment
Это похоже на ошибку. Буду разбираться дальше...   -  person Mark Seemann    schedule 10.11.2015


Ответы (1)


Это был дефект. Это должно быть рассмотрено в AutoFixture 3.36.11.

person Mark Seemann    schedule 16.11.2015
comment
Исправление подтверждено. Теперь это работает. Спасибо за быстрое обращение! - person Nathan A; 16.11.2015