Autofixture: dotnet core 3.0 – Es kann keine Instanz von Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo erstellt werden

Erstellt am 26. Sept. 2019  ·  6Kommentare  ·  Quelle: AutoFixture/AutoFixture

Ich bin gerade dabei, ein einfaches Projekt auf dotnet Core 3 zu aktualisieren. Dieses Projekt hat eine Reihe von Komponententests, die meisten gegen die Controller-/API-Schicht mit AutoFixture & xunit2.

Nach dem Upgrade funktioniert alles AUSSER den Autofixture-Einheitentests, die versuchen, einen Controller zu erstellen. Sie schlagen mit der folgenden Ausnahme fehl:

AutoFixture.ObjectCreationExceptionWithPath : AutoFixture konnte keine Instanz von Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo erstellen, da die Erstellung unerwartet mit einer Ausnahme fehlgeschlagen ist. Bitte beziehen Sie sich auf die innere Ausnahme, um die Grundursache des Fehlers zu untersuchen.

Anfragepfad:
*.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]
System.Collections.Generic.List 1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor] System.Collections.Generic.IEnumerable 1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor]-Auflistung
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

Innere Ausnahmemeldungen:
System.Reflection.TargetInvocationException: Ausnahme wurde vom Ziel eines Aufrufs ausgelöst.
System.ArgumentException: Der Typ „System.Object“ muss „Microsoft.AspNetCore.Mvc.ModelBinding.IModelBinder“ implementieren, um als Modellbinder verwendet zu werden. (Parameterwert')

Hilfreichster Kommentar

Ich weiß, dass dies geschlossen ist, aber für andere Leute, die darauf stoßen und _nicht_ Xunit verwenden, ist die schnelle (faule) Abhilfe zu tun

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); -- Ich bin mir sicher, dass es eine Möglichkeit gibt, die BindingInfo _auch_ zu reparieren, wenn Sie sie brauchen, aber wenn Sie dies in Ihren Tests nicht tun ...

Alle 6 Kommentare

@TroyHouston Ich bin auch auf dieses Problem gestoßen. Ich habe es behoben, indem ich das [Greedy]-Attribut auf meinem Controller verwendet habe.

Ich benutze Nunit :)

@Fjsmoreira Danke! Das funktioniert bei mir auch :)

Ich weiß, dass dieses Problem geschlossen ist, aber ich brauche etwas Hilfe, um zu verstehen, woher das Attribut [Gierig] kommt. @Fjsmoreira oder @TroyHouston , welches Paket/welche Bibliothek muss ich verwenden, um das [Greedy]-Attribut zu erhalten?

Ich weiß, dass dieses Problem geschlossen ist, aber ich brauche etwas Hilfe, um zu verstehen, woher das Attribut [Gierig] kommt. @Fjsmoreira oder @TroyHouston , welches Paket/welche Bibliothek muss ich verwenden, um das [Greedy]-Attribut zu erhalten?

Macht nichts. Herausgefunden! Sieht so aus, als wäre es Teil des AutoFixture.Xunit -Pakets.

Ich weiß, dass dies geschlossen ist, aber für andere Leute, die darauf stoßen und _nicht_ Xunit verwenden, ist die schnelle (faule) Abhilfe zu tun

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); -- Ich bin mir sicher, dass es eine Möglichkeit gibt, die BindingInfo _auch_ zu reparieren, wenn Sie sie brauchen, aber wenn Sie dies in Ihren Tests nicht tun ...

Habe das Problem mit OmitAutoProperties gelöst:
var controller = fixture.Build<SomeController>().OmitAutoProperties().Create() ;

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen