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
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 😅
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!