Autofixture: Acesso ao aparelho criado pelo atributo AutoData.

Criado em 25 abr. 2018  ·  7Comentários  ·  Fonte: AutoFixture/AutoFixture

Oi,
Por enquanto, só consigo acessar o aparelho assim.

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


    Assert.Equal(dummy, dummy);
}

E recebo o aviso 'AutoDataAttribute.Fixture' é obsoleto.

Existe uma maneira melhor de acessar o aparelho criado no atributo AutoData. Eu gostaria de misturar parâmetro e criação e injeção manual.
Obrigado

question

Comentários muito úteis

Sim, é realmente uma maneira melhor.

Você pode colocar isso no wiki AutoData?
Procurei em todos os lugares para descobrir como fazer isso.
Não acho que o contêiner IOC registrou o IFixture.

Muito obrigado!

Todos 7 comentários

Oi,

Claro, simplesmente peça ao fixture subjacente para resolver a instância IFixture e ele retornará self:

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

Funciona para você? :piscadela:

Sim, é realmente uma maneira melhor.

Você pode colocar isso no wiki AutoData?
Procurei em todos os lugares para descobrir como fazer isso.
Não acho que o contêiner IOC registrou o IFixture.

Muito obrigado!

Por que você está tentando se registrar para o dispositivo elétrico com o IoC? Na minha experiência, nunca é necessário

Principalmente para minimizar os parâmetros do método de teste para configuração de interfaces recorrentes complexas.

[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.
}

Eu tenho um exemplo mais simples

Eu você prefere isso

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

por cima disto

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

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

Principalmente para minimizar os parâmetros do método de teste para configuração de interfaces recorrentes complexas.

Concordo, tenho uso semelhante em testes. A única diferença é que eu prefiro prefixar esses métodos de repetição auxiliares com When() , então teste tem a seguinte aparência:

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

Mas basicamente a ideia ainda é a mesma 😉

Fechando este porque não são necessárias mais ações.

Você pode colocar isso no wiki AutoData?

@ malylemire1 Vou criar um site de documentos em algum lugar no futuro. No entanto, sinta-se à vontade para adicionar este exemplo ao nosso wiki 😅

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Eldar1205 picture Eldar1205  ·  5Comentários

josh-degraw picture josh-degraw  ·  4Comentários

ecampidoglio picture ecampidoglio  ·  7Comentários

mjfreelancing picture mjfreelancing  ·  4Comentários

tomasaschan picture tomasaschan  ·  3Comentários