AutoFixture Freeze возвращает пустой объект

Я использую AutoFixture с AutoMoqCustomization, чтобы предоставить любые макеты необходимых зависимостей классов.

Я ожидал, что при тестировании класса с зависимостью любые вызовы методов этой зависимости будут возвращать экземпляр AutoFixtured этого объекта.

AutoFixture создает макеты для зависимостей, и эти макеты возвращают объекты, но объекты пусты. Все, что может быть обнулено, будет нулевым, все, что не может быть обнулено, будет значением по умолчанию.

Я понимаю, что мог бы явно написать

AutoFixture.Freeze<IDependent>()
    .Setup(x=>x.GetThing())
    .Returns(AutoFixture.Create<Thing>())

Но я думал, что это будет работать без явной настройки. Это ожидаемое поведение?


person stackoverfloweth    schedule 26.09.2019    source источник


Ответы (1)


Вы также должны сообщить AutoMoqCustomization, чтобы настроить участников. Я предполагаю, что поведение по умолчанию изменилось в одном из выпусков:

fixture.Customize(new AutoMoqCustomization {ConfigureMembers = true});

Собственно, это и есть документация класса AutoMoqCustomization предлагает:

/// <summary>
/// Enables auto-mocking with Moq.
/// </summary>
/// <remarks>
/// NOTICE! You can assign the customization properties to tweak the features you would like to enable. See example.
/// <br />
/// <code>new AutoMoqCustomization { ConfigureMembers = true }</code>
/// </remarks>
public class AutoMoqCustomization : ICustomization
person Andrii Litvinov    schedule 23.10.2019
comment
Спасибо! Не могу поверить, что мне было так сложно найти такое простое решение. - person stackoverfloweth; 23.10.2019