Autofixture: dotnet core3.0-Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfoからインスタンスを作成できません

作成日 2019年09月26日  ·  6コメント  ·  ソース: AutoFixture/AutoFixture

現在、単純なプロジェクトをdotnet core 3にアップグレードしています。このプロジェクトには多数の単体テストがあり、その大部分はAutoFixtureとxunit2を使用したコントローラー/ APIレイヤーに対して行われます。

アップグレード後、コントローラーを作成しようとする自動フィクスチャ単体テストを除いて、すべてが機能しています。 次の例外で失敗します。

AutoFixture.ObjectCreationExceptionWithPath:AutoFixtureは、Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfoからインスタンスを作成できませんでした。これは、作成が予期せず例外で失敗したためです。 失敗の根本原因を調査するには、内部例外を参照してください。

リクエストパス:
* .Inventory.Api.Controllers.ProductCategoriesControllerコントローラー* .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]コレクション
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

内部例外メッセージ:
System.Reflection.TargetInvocationException:呼び出しのターゲットによって例外がスローされました。
System.ArgumentException:タイプ「System.Object」は、モデルバインダーとして使用される「Microsoft.AspNetCore.Mvc.ModelBinding.IModelBinder」を実装する必要があります。 (パラメータ '値')

最も参考になるコメント

私はこれが閉鎖されていることを知っていますが、これに遭遇した他の人々にとって、Xunitを使用して_arent_することは速い(怠惰な)回避策です

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); -必要に応じてbindingInfoを修正する方法があると確信していますが、テストに参加しない場合は...

全てのコメント6件

@TroyHouston私もこの問題に遭遇しました。 コントローラの[Greedy]属性を使用して修正しました。

私はNunitを使用しています:)

@Fjsmoreiraありがとう! それは私にとってもうまくいきます:)

この問題が解決されたことは知っていますが、[Greedy]属性がどこから来ているのかを理解するのに助けが必要です。 @Fjsmoreiraまたは@TroyHouston 、[Greedy]属性を取得するためにどのパッケージ/ライブラリを使用する必要がありますか?

この問題が解決されたことは知っていますが、[Greedy]属性がどこから来ているのかを理解するのに助けが必要です。 @Fjsmoreiraまたは@TroyHouston 、[Greedy]属性を取得するためにどのパッケージ/ライブラリを使用する必要がありますか?

どうでも。 理解した! AutoFixture.Xunitパッケージの一部のようです。

私はこれが閉鎖されていることを知っていますが、これに遭遇した他の人々にとって、Xunitを使用して_arent_することは速い(怠惰な)回避策です

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); -必要に応じてbindingInfoを修正する方法があると確信していますが、テストに参加しない場合は...

OmitAutoPropertiesで問題を解決しました:
var controller = fixture.Build<SomeController>().OmitAutoProperties().Create() ;

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

ploeh picture ploeh  ·  7コメント

zvirja picture zvirja  ·  3コメント

ploeh picture ploeh  ·  3コメント

ecampidoglio picture ecampidoglio  ·  7コメント

Accc99 picture Accc99  ·  4コメント