Autofixture: تعذر إنشاء ملف مزيف

تم إنشاؤها على ٤ يونيو ٢٠١٨  ·  4تعليقات  ·  مصدر: AutoFixture/AutoFixture

أنا بصدد تحديث مشروع كنت أعمل عليه قبل بضع سنوات. في هذه العملية ، قمت بالتحديث إلى أحدث إصدارات FakeItEasy و AutoFixture.

لدي 40 اختبارًا فشل فيها خطأ مشابه لما يلي:

تعذر على AutoFixture إنشاء مثيل من
FakeItEasy.Fake 1 [System.Collections.Generic.IList 1[AllOverIt.Evaluator.AoiFormulaTokenProcessorContext]] لأن الإنشاء فشل بشكل غير متوقع مع استثناء.

حيث يُبلغ الاستثناء الداخلي:
Failed to create fake of type System.Collections.Generic.IList 1 [AllOverIt.Evaluator.AoiFormulaTokenProcessorContext] `

الخط الفاشل يعادل هذا:
Fixture.Create<Fake<IList<AoiFormulaTokenProcessorContext>>>();

كاختبار حاولت شيئًا أبسط:
Fixture.Create<Fake<IList<int>>>();

لم يتم طرح هذا الأمر ، لذلك ذهبت إلى منشئ AoiFormulaTokenProcessorContext . تبدو هكذا:

public AoiFormulaTokenProcessorContext(Func<char, bool, bool> predicate, Func<char, bool, bool> processor)

بعد بعض القراءة على https://github.com/AutoFixture/AutoFixture/issues/984 حاولت إضافة "GenerateDelegates" إلى هذا:
Fixture.Customize(new AutoFakeItEasyCustomization {GenerateDelegates = true});

لكن لا يزال لدي نفس المشكلة.

نظرًا لأن هذا الرمز كان يعمل ، لا يمكنني إلا أن أفترض أن هناك تغييرًا مفاجئًا آخر في مكان ما لم أعثر عليه بعد. آمل أن يتمكن شخص ما من طرح اقتراح أو طريقي.

TIA.

question

التعليق الأكثر فائدة

أفهم. مع عقود من الخبرة التي أمتلكها ، يجب أن أعرف بشكل أفضل - لقد كنت في نفس القارب وأسأل نفس الشيء. شكرا على الردود.

ال 4 كومينتر

شكرا لمشاركة السيناريو!

كالعادة ، هل لي أن أطلب منك تقديم مثال بسيط وكامل وقابل للتحقق ، حتى أتمكن من نسخه ولصقه للتحقيق بعمق في السبب؟ غالبًا ما يكون الشيطان في بعض التفاصيل ، لذلك حتى لو وصفت السيناريو جيدًا ، فقد يحدث أن بعض التفاصيل غير المذكورة مهمة.

شكرا جزيلا مقدما! :مرتاح:

عذرًا ، كان يجب أن أذهب وأنشئ مشروعًا آخر (ربما زوجًا من) - كنت آمل أن يكون سؤالي قد أثار شيئًا واضحًا قبل أن أذهب وفعلت ذلك لأنه كان سيشمل تحويل طرق التجميع الخاصة بي إلى رمز AutoFixture / FakeItEasy خام.

الخبر السار هو أنني قد أصلحته.

فئة AoiFormulaTokenProcessorContext تسبب المشكلة هي internal (في مشروع آخر). عندما قمت بتغييره إلى public اختفى الخطأ.

كان لدي بالفعل [assembly: InternalsVisibleTo("...")] في ملف AssemblyInfo.cs لكنني تذكرت للتو مشاريعي القديمة التي تضمنت أيضًا [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] .

لا أذكر ما يفعله هذا الأخير ، لكن جميع الأخطاء قد ولت الآن.

خبر سار ، تم تخفيف المشكلة: استرخاء: هذا هو السبب في أنني طلبت العينة - دائمًا ما يكون الأمر أسهل عندما يتم عزل العوامل الأخرى.

لا أذكر ما يفعله هذا الأخير ، لكن جميع الأخطاء قد ولت الآن.

أعلم: الابتسامة: إنها مرتبطة بالوكلاء الوكلاء المزيفين و Castle ، والمستخدمين تحت الغطاء. نعم ، إذا كان الفصل داخليًا ، فيجب أن يساعد بالفعل.

أفهم. مع عقود من الخبرة التي أمتلكها ، يجب أن أعرف بشكل أفضل - لقد كنت في نفس القارب وأسأل نفس الشيء. شكرا على الردود.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

JoshKeegan picture JoshKeegan  ·  6تعليقات

tiesmaster picture tiesmaster  ·  7تعليقات

Accc99 picture Accc99  ·  4تعليقات

zvirja picture zvirja  ·  8تعليقات

gtbuchanan picture gtbuchanan  ·  3تعليقات