Autofixture: dotnet core 3.0 - Impossible de créer une instance à partir de Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo

Créé le 26 sept. 2019  ·  6Commentaires  ·  Source: AutoFixture/AutoFixture

Je suis actuellement en train de mettre à niveau un projet simple vers dotnet core 3. Ce projet comporte un certain nombre de tests unitaires, la majorité contre la couche contrôleur/api utilisant AutoFixture & xunit2.

Après la mise à niveau, tout fonctionne SAUF les tests unitaires d'autofixture qui tentent de créer un contrôleur. Ils échouent à l'exception suivante :

AutoFixture.ObjectCreationExceptionWithPath : AutoFixture n'a pas pu créer une instance à partir de Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo car la création a échoué de manière inattendue avec une exception. Veuillez vous reporter à l'exception interne pour rechercher la cause première de l'échec.

Chemin de requête :
*.Inventory.Api.Controllers.ProductCategoriesController contrôleur* .Inventory.Api.Controllers.ProductCategoriesController
Microsoft.AspNetCore.Mvc.ControllerContext ControllerContext
Microsoft.AspNetCore.Mvc.ControllerContextMicrosoft.AspNetCore.Mvc.ControllerContext
Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor ActionDescriptor
Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptorMicrosoft.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]
System.Collections.Generic.List 1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor] System.Collections.Generic.IEnumerable 1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor] collection
System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor]
Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptorMicrosoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor
Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo BindingInfo
Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo

Messages d'exception internes :
System.Reflection.TargetInvocationException : une exception a été levée par la cible d'un appel.
System.ArgumentException : Le type 'System.Object' doit implémenter 'Microsoft.AspNetCore.Mvc.ModelBinding.IModelBinder' pour être utilisé comme classeur de modèle. (Paramètre 'valeur')

Commentaire le plus utile

Je sais que c'est fermé, mais pour les autres personnes qui se heurtent à cela et qui n'utilisent pas Xunit, la solution de contournement rapide (paresseuse) consiste à faire

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); - Je suis sûr qu'il existe un moyen de corriger _également_ les informations de liaison si vous en avez besoin, mais si vous ne le faites pas dans vos tests ...

Tous les 6 commentaires

@TroyHouston J'ai également rencontré ce problème. Je l'ai corrigé en utilisant l'attribut [Greedy] sur mon contrôleur.

J'utilise Nunit :)

@Fjsmoreira Merci ! Moi aussi ça marche :)

Je sais que ce problème est clos, mais j'ai besoin d'aide pour comprendre d'où vient l'attribut [Greedy]. @Fjsmoreira ou @TroyHouston , quel package/bibliothèque dois-je utiliser pour obtenir l'attribut [Greedy] ?

Je sais que ce problème est clos, mais j'ai besoin d'aide pour comprendre d'où vient l'attribut [Greedy]. @Fjsmoreira ou @TroyHouston , quel package/bibliothèque dois-je utiliser pour obtenir l'attribut [Greedy] ?

Ça ne fait rien. Deviner! On dirait que cela fait partie du package AutoFixture.Xunit .

Je sais que c'est fermé, mais pour les autres personnes qui se heurtent à cela et qui n'utilisent pas Xunit, la solution de contournement rapide (paresseuse) consiste à faire

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); - Je suis sûr qu'il existe un moyen de corriger _également_ les informations de liaison si vous en avez besoin, mais si vous ne le faites pas dans vos tests ...

Résolu le problème avec OmitAutoProperties :
var controller = fixture.Build<SomeController>().OmitAutoProperties().Create() ;

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

Questions connexes

malylemire1 picture malylemire1  ·  7Commentaires

Ephasme picture Ephasme  ·  3Commentaires

josh-degraw picture josh-degraw  ·  4Commentaires

Ridermansb picture Ridermansb  ·  4Commentaires

ecampidoglio picture ecampidoglio  ·  7Commentaires