Autofixture: dotnet core 3.0 - Não é possível criar uma instância de Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo

Criado em 26 set. 2019  ·  6Comentários  ·  Fonte: AutoFixture/AutoFixture

Estou atualmente no processo de atualização de um projeto simples para o dotnet core 3. Este projeto tem uma série de testes de unidade, a maioria contra a camada de controlador/api usando AutoFixture & xunit2.

Após a atualização, tudo está funcionando, EXCETO os testes de unidade de autofixture que tentam criar um controlador. Eles falham com a seguinte exceção:

AutoFixture.ObjectCreationExceptionWithPath : AutoFixture não pôde criar uma instância de Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo porque a criação falhou inesperadamente com exceção. Consulte a exceção interna para investigar a causa raiz da falha.

Caminho da solicitação:
*.Inventory.Api.Controllers.ProductCategoriesController controller* .Inventory.Api.Controllers.ProductCategoriesController
Microsoft.AspNetCore.Mvc.ControllerContext ControllerContext
Microsoft.AspNetCore.Mvc.ControllerContext
Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor ActionDescriptor
Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor
System.Collections.Generic.IList 1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor] Parameters System.Collections.Generic.IList 1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor]
Coleção System.Collections.Generic.List 1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor] System.Collections.Generic.IEnumerable 1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor]
System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor]
Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor
Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo BindingInfo
Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo

Mensagens de exceção interna:
System.Reflection.TargetInvocationException: A exceção foi lançada pelo destino de uma invocação.
System.ArgumentException: O tipo 'System.Object' deve implementar 'Microsoft.AspNetCore.Mvc.ModelBinding.IModelBinder' para ser usado como um fichário de modelo. (Valor do parâmetro')

Comentários muito úteis

Eu sei que isso está fechado, mas para outras pessoas que se deparam com isso que _arent_ usando o Xunit, a solução rápida (preguiçosa) é fazer

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); -- Tenho certeza de que há uma maneira de _também_ corrigir bindingInfo se você precisar, mas se não precisar em seus testes ...

Todos 6 comentários

@TroyHouston Também me deparei com esse problema. Eu consertei usando o atributo [Greedy] no meu controlador.

Estou usando Nunit :)

@Fjsmoreira Obrigado! Isso também funciona para mim :)

Eu sei que este problema está encerrado, mas preciso de ajuda para entender de onde vem o atributo [Greedy]. @Fjsmoreira ou @TroyHouston , qual pacote/biblioteca preciso usar para obter o atributo [Greedy]?

Eu sei que este problema está encerrado, mas preciso de ajuda para entender de onde vem o atributo [Greedy]. @Fjsmoreira ou @TroyHouston , qual pacote/biblioteca preciso usar para obter o atributo [Greedy]?

Deixa pra lá. Descobri! Parece que faz parte do pacote AutoFixture.Xunit .

Eu sei que isso está fechado, mas para outras pessoas que se deparam com isso que _arent_ usando o Xunit, a solução rápida (preguiçosa) é fazer

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); -- Tenho certeza de que há uma maneira de _também_ corrigir bindingInfo se você precisar, mas se não precisar em seus testes ...

Resolvido o problema com OmitAutoProperties :
var controller = fixture.Build<SomeController>().OmitAutoProperties().Create() ;

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

Questões relacionadas

malylemire1 picture malylemire1  ·  7Comentários

JoshKeegan picture JoshKeegan  ·  6Comentários

DeafLight picture DeafLight  ·  5Comentários

ploeh picture ploeh  ·  3Comentários

joelleortiz picture joelleortiz  ·  4Comentários