Autofixture: dotnet core 3.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”才能用作模型绑定器。 (参数“值”)

最有用的评论

我知道这是关闭的,但是对于遇到此问题的其他人_arent_使用Xunit,快速(懒惰)的解决方法是

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); ——如果你需要,我确信有一种方法可以_也_修复 bindingInfo,但如果你不在测试中......

所有6条评论

@TroyHouston我也遇到过这个问题。 我已经通过在我的控制器上使用 [Greedy] 属性来修复它。

我正在使用 Nunit :)

@Fjsmoreira谢谢! 这也适用于我:)

我知道这个问题已经结束,但我需要一些帮助来理解 [Greedy] 属性的来源。 @Fjsmoreira@TroyHouston ,我需要使用什么包/库来获取 [Greedy] 属性?

我知道这个问题已经结束,但我需要一些帮助来理解 [Greedy] 属性的来源。 @Fjsmoreira@TroyHouston ,我需要使用什么包/库来获取 [Greedy] 属性?

没关系。 弄清楚了! 看起来它是AutoFixture.Xunit包的一部分。

我知道这是关闭的,但是对于遇到此问题的其他人_arent_使用Xunit,快速(懒惰)的解决方法是

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); ——如果你需要,我确信有一种方法可以_也_修复 bindingInfo,但如果你不在测试中......

解决了OmitAutoProperties的问题:
var controller = fixture.Build<SomeController>().OmitAutoProperties().Create() ;

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

zvirja picture zvirja  ·  8评论

gtbuchanan picture gtbuchanan  ·  3评论

ploeh picture ploeh  ·  7评论

Ephasme picture Ephasme  ·  3评论

Accc99 picture Accc99  ·  4评论