FluentAssertions چیست؟
کتابخانهای برای نوشتن Assertion به سبک زنجیرهای و شبیه زبان طبیعی، با پیام خطای بسیار خواناتر از Assert استاندارد.
چرا مهم است؟
پیام خطای پیشفرض Assert.Equal معمولاً فقط میگوید «انتظار X، دریافت Y» بدون جزئیات بیشتر؛ FluentAssertions در تستهای پیچیده (مثل مقایسه یک آبجکت کامل) خطای بسیار دقیقتری نشان میدهد و دیباگ را سریعتر میکند.
تعریف
FluentAssertions کتابخانهای Assertion است که بهجای Assert.Equal(expected, actual) نحوی زنجیرهای و خواناتر شبیه جمله انگلیسی ارائه میدهد: actual.Should().Be(expected).
مثال
result.Should().Be(42);
person.Should().BeEquivalentTo(new Person { Name = "Ali", Age = 30 });
list.Should().HaveCount(3)
.And.Contain(x => x.IsActive);
Action act = () => calculator.Divide(1, 0);
act.Should().Throw<DivideByZeroException>();
چرا پیام خطا مهم است
وقتی یک آبجکت کامل با BeEquivalentTo مقایسه شود و فقط یک Property فرق داشته باشد، FluentAssertions دقیقاً همان Property و مقدار مورد انتظار/واقعی را در پیام خطا نشان میدهد؛ بهجای اینکه فقط بگوید دو آبجکت برابر نیستند.
اشتباه رایج
❌ نوشتن result.Should().Equals(expected) بهجای result.Should().Be(expected) — چون Equals اینجا فقط یک bool برمیگرداند و بیصدا نادیده گرفته میشود، در نتیجه تست حتی با مقدار اشتباه هم سبز میماند.
منبع و مطالعه بیشتر
خلاصه
FluentAssertions با نحو زنجیرهای (x.Should().Be(y)) و پیام خطای بسیار دقیقتر، جایگزین Assert استاندارد میشود. برای مقایسه آبجکتهای کامل از BeEquivalentTo استفاده کنید. مراقب اشتباه رایج Should().Equals() بهجای Should().Be() باشید. مرجع کامل: مستندات رسمی FluentAssertions.
