Autofixture: Доступ к приспособлению, созданному атрибутом AutoData.

Созданный на 25 апр. 2018  ·  7Комментарии  ·  Источник: AutoFixture/AutoFixture

Привет,
На данный момент я могу получить доступ к приспособлению только таким образом.

[Theory, AutoData]
public void Dummy(string dummy)
{
    MethodBase method = MethodBase.GetCurrentMethod();
    IFixture fixture = method.GetCustomAttribute<AutoDataAttribute>().Fixture;


    Assert.Equal(dummy, dummy);
}

И я получаю предупреждение «AutoDataAttribute.Fixture» - это устаревшее предупреждение.

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

question

Самый полезный комментарий

Да, это действительно лучший способ.

Вы можете поместить это в вики AutoData?
Я повсюду искал, как это сделать.
Не думал, что контейнер IOC зарегистрировал IFixture.

Большое спасибо!

Все 7 Комментарий

Привет,

Конечно, просто попросите базовое устройство разрешить экземпляр IFixture и он вернет self:

c# [Theory, AutoData] public void Dummy(string dummy, IFixture fixture) { }

Работает ли это для вас? :подмигивание:

Да, это действительно лучший способ.

Вы можете поместить это в вики AutoData?
Я повсюду искал, как это сделать.
Не думал, что контейнер IOC зарегистрировал IFixture.

Большое спасибо!

Почему вы пытаетесь зарегистрировать прибор в IoC? По моему опыту это никогда не нужно

В основном для минимизации параметров метода тестирования для сложной настройки повторяющихся интерфейсов.

[Theory, AutoMoqData]
public void Dummy(IFixture fixture, [Frozen]Mock<IComplexInterfaceWith30SubInterfaces> needed, TestClass sut)
{
    //This will add interfaces setups for needed by retrieving them from the IoC container or by property access.
    SetupInterfaces(fixture, needed);
    //We can now use needed injected in sut.
}

У меня есть пример попроще

Я тебе больше нравлюсь

[Theory, AutoMoqData]
public void Dummy(IFixture fixture)
{
    Assert.Equal(String.Empty, String.Empty);
}

через это

[Fact]
public void Dummy2()
{
    IFixture fixture = new Fixture().Customize(new AutoMoqCustomization());

    Assert.Equal(String.Empty, String.Empty);
}

В основном для минимизации параметров метода тестирования для сложной настройки повторяющихся интерфейсов.

Согласитесь, у меня в тестах есть подобное использование. Единственная разница в том, что я предпочитаю добавлять к вспомогательным повторяющимся методам префикс When() , поэтому тест выглядит следующим образом:

c# public void Test([Frozen] IProvider provider, ISut sut, IFixture fixture) { // arrange WhenProviderReturnsOnlyInitializedEntities(provider, fixture); ..... }

Но в основном идея та же 😉

Закрытие, так как больше никаких действий не требуется.

Вы можете поместить это в вики AutoData?

@ malylemire1 Я собираюсь создать где-нибудь сайт документации. Однако не стесняйтесь добавлять этот образец в нашу вики 😅

Была ли эта страница полезной?
0 / 5 - 0 рейтинги