لإضافة الـ claims في الـ mock ClaimsPrincipal، يجب التأكد من تحديد الـ claim المطلوبة بشكل صحيح. في الكود الحالي، يتم استخدام الدالة FindFirst
للبحث عن الـ claim بـ “name”، لذا يجب التأكد من إضافة الـ claim بنفس الاسم في القائمة claimCollection
. كما يجب التأكد من أن الـ claim يتم إضافتها بشكل صحيح إلى الـ mock ClaimsPrincipal.
الكود الذي قمت بتوفيره يبدو صحيحًا، ويمكن أن يحتوي على خطأ في الـ setup الخاص بـ ClaimsIdentity
، حيث أنه يجب تحديد نوع الـ claim بشكل صحيح في هذا الجزء. يمكن تحديد الـ claim بالتالي:
-
إضافة تحكم ديناميكي إلى GroupBox في C#02/03/2024
-
كيفية إضافة سلسلة نصية لمصفوفة في لغة C#29/01/2024
-
تحسين أداء حذف وإضافة الفهارس في SQL Server12/04/2024
csharpidentityMock.Setup(x => x.FindFirst("name")).Returns(claimCollection.FirstOrDefault(c => c.Type == "name"));
بعد ذلك، يمكنك تحديد الـ claim المطلوبة بشكل صحيح في الـ controller الخاص بك:
csharpreturn Content(ClaimsPrincipal.Current.FindFirst("name").Value);
يمكنك الآن تشغيل الوحدات الاختبارية ويجب أن يعود الـ viewresult.Content بقيمة “John Doe” كما هو متوقع.
المزيد من المعلومات
لضمان نجاح اختبار الوحدة الخاص بك، يجب أن تتأكد من عدة أمور:
- تأكد من أن الـ claim الذي تحاول البحث عنه في الـ
ClaimsPrincipal
موجود في القائمةclaimCollection
التي تم تحديدها في الـ mock. - تأكد من أن تحديد الـ claim في الـ
Setup
الخاص بـClaimsIdentity
يتم بشكل صحيح ويستخدم الدالة الصحيحة (في هذه الحالةFindFirst
). - تأكد من أن تحديد الـ claim في الـ
Setup
الخاص بـClaimsPrincipal
يتم بشكل صحيح ويعود القيمة المناسبة.
يمكنك أيضًا إضافة تحقق إضافي للتأكد من أن الـ claim المطلوبة تم العثور عليها بشكل صحيح في الـ ClaimsPrincipal
:
csharp// Arrange
// ...
// Act
var viewresult = sut.GetName() as ContentResult;
// Assert
Assert.NotNull(viewresult);
Assert.That(viewresult.Content, Is.EqualTo("John Doe"));
بعد تأكيد كل هذه الأمور، يجب أن يتم اختبار الوحدة الخاصة بك بنجاح وأن يتم استرداد قيمة الـ claim بشكل صحيح.