Autofixture: dotnet core 3.0 — невозможно создать экземпляр из Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo

Созданный на 26 сент. 2019  ·  6Комментарии  ·  Источник: AutoFixture/AutoFixture

В настоящее время я занимаюсь обновлением простого проекта до ядра dotnet 3. В этом проекте есть ряд модульных тестов, большинство из которых относится к уровню контроллера/API с использованием AutoFixture и xunit2.

После обновления все работает, ЗА ИСКЛЮЧЕНИЕМ модульных тестов автофиксации, которые пытаются создать контроллер. Они терпят неудачу со следующим исключением:

AutoFixture.ObjectCreationExceptionWithPath: AutoFixture не удалось создать экземпляр из Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo, поскольку создание неожиданно завершилось ошибкой с исключением. Обратитесь к внутреннему исключению, чтобы выяснить основную причину сбоя.

Путь запроса:
*.Inventory.Api.Controllers.ProductCategoriesController контроллер* .Inventory.Api.Controllers.ProductCategoriesController
Microsoft.AspNetCore.Mvc.ControllerContext
Microsoft.AspNetCore.Mvc.ControllerContext
Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor
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
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()); -- я уверен, что есть способ _also_ исправить bindingInfo, если он вам нужен, но если вы этого не сделаете в своих тестах...

Все 6 Комментарий

@TroyHouston Я тоже столкнулся с этой проблемой. Я исправил это, используя атрибут [Жадность] на моем контроллере.

Я использую Нунит :)

@Fjsmoreira Спасибо! Это тоже работает для меня :)

Я знаю, что этот вопрос закрыт, но мне нужна помощь, чтобы понять, откуда берется атрибут [Жадность]. @Fjsmoreira или @TroyHouston , какой пакет/библиотеку мне нужно использовать, чтобы получить атрибут [Жадный]?

Я знаю, что этот вопрос закрыт, но мне нужна помощь, чтобы понять, откуда берется атрибут [Жадность]. @Fjsmoreira или @TroyHouston , какой пакет/библиотеку мне нужно использовать, чтобы получить атрибут [Жадный]?

Не бери в голову. Догадаться! Похоже, это часть пакета AutoFixture.Xunit .

Я знаю, что это закрыто, но для других людей, которые сталкиваются с этим, кто _arent_ использует Xunit, быстрый (ленивый) обходной путь должен сделать

Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties()); -- я уверен, что есть способ _also_ исправить bindingInfo, если он вам нужен, но если вы этого не сделаете в своих тестах...

Решил проблему с OmitAutoProperties :
var controller = fixture.Build<SomeController>().OmitAutoProperties().Create() ;

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

tomasaschan picture tomasaschan  ·  3Комментарии

tiesmaster picture tiesmaster  ·  7Комментарии

zvirja picture zvirja  ·  4Комментарии

ploeh picture ploeh  ·  3Комментарии

mjfreelancing picture mjfreelancing  ·  4Комментарии