Nunit: لا يمكن اختبار نوع الكائن مع القيد

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

مرحبًا ، لا يمكنني اختبار أنواع الكائنات مع وجود قيد ، لكن التأكيد الكلاسيكي لا يزال يعمل

enum TestEnum : ushort
{
    one = 0x01,
    two = 0x02
}

// test is okay
Assert.AreEqual(typeof(ushort), typeof(TestEnum).GetEnumUnderlyingType());

// test failed
//
// Expected: <System.Uint16>
//  But was: <System.RuntimeType>
//
Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.TypeOf<ushort>());
notabug

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

مرحباTobiasSekan. أود أن أقول أن هذا متوقع. في التأكيد الكلاسيكي ، أنت تقارن نوعين فقط. القيد "_tests" ما إذا كانت القيمة الفعلية من النوع المقدم كوسيطة أو من النوع المشتق. _ "ونوع القيمة typeof(TestEnum).GetEnumUnderlyingType() هي System.RuntimeType .

على غرار ما يلي قد يفشل أيضًا (مع نفس النوع من الرسائل)

Assert.That(typeof(string), Is.TypeOf<string>());

بينما

Assert.That("", Is.TypeOf<string>());

سيعمل. يمكنك دائمًا إعادة صياغة القيد كـ Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));

ال 4 كومينتر

ما هي منصة ونسخة نونيت من فضلك؟

مرحباTobiasSekan. أود أن أقول أن هذا متوقع. في التأكيد الكلاسيكي ، أنت تقارن نوعين فقط. القيد "_tests" ما إذا كانت القيمة الفعلية من النوع المقدم كوسيطة أو من النوع المشتق. _ "ونوع القيمة typeof(TestEnum).GetEnumUnderlyingType() هي System.RuntimeType .

على غرار ما يلي قد يفشل أيضًا (مع نفس النوع من الرسائل)

Assert.That(typeof(string), Is.TypeOf<string>());

بينما

Assert.That("", Is.TypeOf<string>());

سيعمل. يمكنك دائمًا إعادة صياغة القيد كـ Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));

التقاط جيدmikkelbu. سأغلق هذا كـ not a bug . TobiasSekan يمكنني رؤية الالتباس ، لكن المعلمة الأولى بشكل فعال هي TypeOf<Type> وليس ushort .

حسنًا ، شكرًا لك على المعلومات

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