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