تكرار السؤال: …
الإجابة المختصرة
تحول التوكيدات إلى لغة طبيعية مقروءة بأسلوب السلسلة (Fluent Syntax) وتقدم رسائل أخطاء تفصيلية وواضحة جداً عند فشل الاختبار.
الشرح
بدلاً من كتابة Assert.Equal(expected, actual) والارتباك التقليدي في ترتيب المعاملين، توفر FluentAssertions صياغة بديهية: actual.Should().Be(expected). تتميز بمقارنة الكائنات العميقة الشاملة: order.Should().BeEquivalentTo(expectedOrder)، وفحص استثناءات الـ async بسلاسة، وتقديم شروحات دقيقة توضح الفارق الحرفي بين القيمتين عند الفشل.
مثال بالكود
user.Email.Should().NotBeNullOrWhiteSpace();
user.Age.Should().BeGreaterThanOrEqualTo(18);
user.Roles.Should().Contain("Admin").And.HaveCount(2);أخطاء شائعة
- مقارنة كائنات تحتوي على معرفات عشوائية أو تواريخ دون استثناء الحقول المتغيرة عبر options.Excluding().