Autofixture: السؤال: إعداد التبعيات المتداخلة يسخر من AutoMoqCustomization

تم إنشاؤها على ١٥ أبريل ٢٠١٦  ·  5تعليقات  ·  مصدر: AutoFixture/AutoFixture

لقد حاولت استخدام AutoMoqCustomization لعمل محاكاة تلقائية للرسم البياني للكائن مع التبعيات المتداخلة والنتائج ليست كما توقعت. هذا هو رمز الاختبار ، هل يمكن لشخص ما أن يخبرني لماذا بعد تجميد Mock<IObject> هناك موقف حيث يتم إنشاء IObject بواسطة Moq بواسطة التركيبات؟

[TestClass]
    public class MyTestClass
    {
        [TestMethod]
        public void Test()
        {
            var fixture = new Fixture().Customize(new AutoMoqCustomization());

            var objMock = fixture.Freeze<Mock<IObject>>();
            var sut = fixture.Create<Dependant2>();

            sut.Obj.Should().BeSameAs(objMock);
        }
    }

    public interface IObject { }

    public interface IDependant { IObject Obj { get; } }

    public class MyObject : IObject { }

    public class Dependant2
    {
        public Dependant2(IDependant dependant)
        {
            Obj = dependant.Obj;
        }

        public IObject Obj { get; }
    }

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

يقوم AutoMoqCustomization بإنشاء كائنات وهمية ولكنه لا يقوم بإعدادها.

إذا كنت تريد إعداد أعضاء النموذج ، ففكر في استخدام AutoConfiguredMoqCustomization بدلاً من ذلك. ستعمل على (أ) تعيين الخصائص العامة القابلة للتعيين الخاصة بـ mock و b) طرق الإعداد / المفهرسات لإرجاع (وحفظ) القيم التي تم إنشاؤها بشكل كسول بواسطة الأداة

هناك نوعان من القيود. لم يتم الإعداد:

  • الطرق باستخدام معلمات ref
  • طرق عامة

مزيد من المعلومات في الجزء السفلي من ورقة الغش .

ال 5 كومينتر

يقوم AutoMoqCustomization بإنشاء كائنات وهمية ولكنه لا يقوم بإعدادها.

إذا كنت تريد إعداد أعضاء النموذج ، ففكر في استخدام AutoConfiguredMoqCustomization بدلاً من ذلك. ستعمل على (أ) تعيين الخصائص العامة القابلة للتعيين الخاصة بـ mock و b) طرق الإعداد / المفهرسات لإرجاع (وحفظ) القيم التي تم إنشاؤها بشكل كسول بواسطة الأداة

هناك نوعان من القيود. لم يتم الإعداد:

  • الطرق باستخدام معلمات ref
  • طرق عامة

مزيد من المعلومات في الجزء السفلي من ورقة الغش .

شكرا للاستجابة السريعة! لقد جربت AutoConfiguredMoqCustomization باستخدام الطريقة بدلاً من الخاصية في IDependant وقد احترمت النسخة المجمدة. هل هناك طريقة لجعل الممتلكات غير القابلة للتسوية محترمة أيضًا؟ مع Moq يمكن للمرء إعداد خاصية getter حتى في حالة عدم وجود أداة ضبط.

في الواقع ، فما باللك. إنه يقوم بإعداد خصائص get-only أيضًا ، يا سيئة.

أتذكر أيضًا خطأً في Moq تداخل مع AutoMoq ، مما جعله غير قادر على إعداد خصائص get-only. على الأقل عندما نظرت في هذا الأمر ، كان عليك استخدام Moq الإصدار 4.2.1409.1722 أو أقل (التفاصيل في # 434). ربما تم إصلاح الخطأ في الإصدار الأحدث من Moq ، لست متأكدًا.

جربت أعلى إصدار من Moq أقل من 4.2.1409.1722 وأنت على صواب ، فهو يعمل أيضًا مع خصائص get-only. لم يتم إصلاح خطأ Moq في إصدار أحدث ، حيث جربته بأحدث. شكرا جزيلا لك على مساعدتك

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