أنا حاليًا بصدد ترقية مشروع بسيط إلى dotnet core 3. يحتوي هذا المشروع على عدد من اختبارات الوحدة ، معظمها ضد طبقة وحدة التحكم / api باستخدام AutoFixture & xunit2.
بعد الترقية ، يعمل كل شيء باستثناء اختبارات وحدة المزج التلقائي التي تحاول إنشاء وحدة تحكم. فشلوا مع الاستثناء التالي:
AutoFixture.ObjectCreationExceptionWithPath: لم يتمكن AutoFixture من إنشاء مثيل من Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo بسبب فشل الإنشاء بشكل غير متوقع مع استثناء. يرجى الرجوع إلى الاستثناء الداخلي للتحقيق في السبب الجذري للفشل.
مسار الطلب:
* .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.IList1[Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor] Parameters System.Collections.Generic.IList
1 [Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor]
System.Collections.Generic.List1[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" لاستخدامه كموثق نموذج. (قيمة المعلمة)
TroyHouston لقد واجهت هذه المشكلة أيضًا. لقد أصلحته باستخدام السمة [الجشع] على وحدة التحكم الخاصة بي.
أنا أستخدم نونيت :)
تضمين التغريدة هذا يناسبني أيضًا :)
أعلم أن هذه المشكلة قد تم إغلاقها ، لكني بحاجة إلى بعض المساعدة لفهم مصدر السمة [الجشع]. Fjsmoreira أو TroyHouston ، ما الحزمة / المكتبة التي أحتاج لاستخدامها للحصول على سمة [الجشع]؟
أعلم أن هذه المشكلة قد تم إغلاقها ، لكني بحاجة إلى بعض المساعدة لفهم مصدر السمة [الجشع]. Fjsmoreira أو TroyHouston ، ما الحزمة / المكتبة التي أحتاج لاستخدامها للحصول على سمة [الجشع]؟
لا تهتم. اكتشفه! يبدو أنه جزء من حزمة AutoFixture.Xunit .
أعلم أن هذا مغلق ولكن بالنسبة للأشخاص الآخرين الذين يصادفون هذا الذي يستخدم Xunit ، فإن الحل السريع (الكسول) هو القيام به
Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties());
- أنا متأكد من أن هناك طريقة _أيضا_ لإصلاح معلومات الربط إذا كنت في حاجة إليها ولكن إذا لم تشارك في اختباراتك ...
حل المشكلة مع OmitAutoProperties
:
var controller = fixture.Build<SomeController>().OmitAutoProperties().Create()
؛
التعليق الأكثر فائدة
أعلم أن هذا مغلق ولكن بالنسبة للأشخاص الآخرين الذين يصادفون هذا الذي يستخدم Xunit ، فإن الحل السريع (الكسول) هو القيام به
Fixture.Customize<BindingInfo>(c => c.OmitAutoProperties());
- أنا متأكد من أن هناك طريقة _أيضا_ لإصلاح معلومات الربط إذا كنت في حاجة إليها ولكن إذا لم تشارك في اختباراتك ...