لقد حاولت استخدام 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
مزيد من المعلومات في الجزء السفلي من ورقة الغش .
شكرا للاستجابة السريعة! لقد جربت 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 في إصدار أحدث ، حيث جربته بأحدث. شكرا جزيلا لك على مساعدتك
التعليق الأكثر فائدة
يقوم
AutoMoqCustomization
بإنشاء كائنات وهمية ولكنه لا يقوم بإعدادها.إذا كنت تريد إعداد أعضاء النموذج ، ففكر في استخدام
AutoConfiguredMoqCustomization
بدلاً من ذلك. ستعمل على (أ) تعيين الخصائص العامة القابلة للتعيين الخاصة بـ mock و b) طرق الإعداد / المفهرسات لإرجاع (وحفظ) القيم التي تم إنشاؤها بشكل كسول بواسطة الأداةهناك نوعان من القيود. لم يتم الإعداد:
ref
مزيد من المعلومات في الجزء السفلي من ورقة الغش .