Autofixture: Accès au luminaire créé par l'attribut AutoData.

Créé le 25 avr. 2018  ·  7Commentaires  ·  Source: AutoFixture/AutoFixture

Salut,
Pour l'instant, je ne peux accéder au projecteur que comme celui-ci.

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


    Assert.Equal(dummy, dummy);
}

Et j'obtiens l'avertissement 'AutoDataAttribute.Fixture' est obsolète.

Existe-t-il un meilleur moyen d'accéder à l'appareil créé dans l'attribut AutoData. Je voudrais mélanger la création et l'injection de paramètres et de manuels.
Merci

question

Commentaire le plus utile

Oui, c'est vraiment une meilleure façon.

Pouvez-vous mettre cela dans le wiki AutoData ?
J'ai cherché partout pour trouver comment faire.
Je ne pensais pas que le conteneur IOC avait enregistré l'IFixture.

Merci beaucoup!

Tous les 7 commentaires

Salut,

Bien sûr, demandez simplement à l'appareil sous-jacent de résoudre l'instance IFixture et il renverra self :

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

Est-ce que ça marche pour toi? :clin d'œil:

Oui, c'est vraiment une meilleure façon.

Pouvez-vous mettre cela dans le wiki AutoData ?
J'ai cherché partout pour trouver comment faire.
Je ne pensais pas que le conteneur IOC avait enregistré l'IFixture.

Merci beaucoup!

Pourquoi essayez-vous de vous inscrire au match avec l'IoC ? D'après mon expérience, ce n'est jamais nécessaire

Principalement pour minimiser les paramètres de méthode de test pour la configuration d'interfaces récurrentes complexes.

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

j'ai un exemple plus simple

je te préfère ça

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

sur ceci

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

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

Principalement pour minimiser les paramètres de méthode de test pour la configuration d'interfaces récurrentes complexes.

D'accord, j'ai la même utilisation dans les tests. La seule différence est que je préfère préfixer ces méthodes de répétition auxiliaires avec When() , donc le test ressemble à ce qui suit :

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

Mais au fond l'idée est toujours la même

Fermez celui-ci car aucune autre action n'est requise.

Pouvez-vous mettre cela dans le wiki AutoData ?

@ malylemire1 Je vais créer un site de documentation quelque part à l'avenir. Cependant, n'hésitez pas à ajouter cet échantillon à notre wiki 😅

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

tiesmaster picture tiesmaster  ·  7Commentaires

JoshKeegan picture JoshKeegan  ·  6Commentaires

tomasaschan picture tomasaschan  ·  3Commentaires

ecampidoglio picture ecampidoglio  ·  7Commentaires

zvirja picture zvirja  ·  4Commentaires