Autofixture: الوصول إلى المباراة التي تم إنشاؤها بواسطة سمة AutoData.

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

أهلا،
في الوقت الحالي ، يمكنني فقط الوصول إلى هذه المباراة.

[Theory, AutoData]
public void Dummy(string dummy)
{
    MethodBase method = MethodBase.GetCurrentMethod();
    IFixture fixture = method.GetCustomAttribute<AutoDataAttribute>().Fixture;


    Assert.Equal(dummy, dummy);
}

وأحصل على "AutoDataAttribute.Fixture" تحذير قديم.

هل هناك طريقة أفضل للوصول إلى الأداة التي تم إنشاؤها في سمة AutoData. أرغب في مزج المعلمات والإنشاء اليدوي والحقن.
شكرا

question

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

نعم ، إنها حقًا طريقة أفضل.

هل يمكنك وضع هذا في AutoData wiki؟
لقد بحثت في كل مكان لأجد كيفية القيام بذلك.
لا أعتقد أن حاوية IOC قد سجلت IFixture.

شكرا جزيلا!

ال 7 كومينتر

أهلا،

بالتأكيد ، ما عليك سوى أن تطلب من التركيبات الأساسية حل مثيل IFixture وسيعود بنفسه:

c# [Theory, AutoData] public void Dummy(string dummy, IFixture fixture) { }

هل تعمل من أجلك؟ :غمزة:

نعم ، إنها حقًا طريقة أفضل.

هل يمكنك وضع هذا في AutoData wiki؟
لقد بحثت في كل مكان لأجد كيفية القيام بذلك.
لا أعتقد أن حاوية IOC قد سجلت IFixture.

شكرا جزيلا!

لماذا تحاول التسجيل في المباراة مع IoC؟ في تجربتي ليست هناك حاجة أبدا

في الغالب لتقليل معلمات طريقة الاختبار لإعداد واجهات متكررة معقدة.

[Theory, AutoMoqData]
public void Dummy(IFixture fixture, [Frozen]Mock<IComplexInterfaceWith30SubInterfaces> needed, TestClass sut)
{
    //This will add interfaces setups for needed by retrieving them from the IoC container or by property access.
    SetupInterfaces(fixture, needed);
    //We can now use needed injected in sut.
}

لدي مثال أبسط

انا افضل هذا

[Theory, AutoMoqData]
public void Dummy(IFixture fixture)
{
    Assert.Equal(String.Empty, String.Empty);
}

على هذا

[Fact]
public void Dummy2()
{
    IFixture fixture = new Fixture().Customize(new AutoMoqCustomization());

    Assert.Equal(String.Empty, String.Empty);
}

في الغالب لتقليل معلمات طريقة الاختبار لإعداد واجهات متكررة معقدة.

موافق ، لدي نفس الاستخدام في الاختبارات. الاختلاف الوحيد هو أنني أفضل أن أبدأ طرق التكرار المساعدة هذه بـ When() ، لذلك يبدو الاختبار كما يلي:

c# public void Test([Frozen] IProvider provider, ISut sut, IFixture fixture) { // arrange WhenProviderReturnsOnlyInitializedEntities(provider, fixture); ..... }

لكن الفكرة في الأساس لا تزال هي نفسها 😉

إغلاق هذا واحد حيث لا توجد إجراءات أخرى مطلوبة.

هل يمكنك وضع هذا في AutoData wiki؟

@ malylemire1 سأقوم بإنشاء موقع مستند في مكان ما في المستقبل. ومع ذلك ، لا تتردد في إضافة هذه العينة إلى ويكي 😅 الخاص بنا

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