SuperAPI AI 工具集

fluent-assertions

测试与质量

查看项目

更新于 10-16 03:39

技能介绍

用途:在 C# 测试中通过 FluentAssertions 库编写可读的断言,覆盖单元测试、集成测试、对象状态验证与异常测试等场景。该技能说明 Sorcha 代码库在 1100 多个测试中配合 xUnit 使用它,所有断言遵循 subject.Should().BeX() 模式。

主要能力:基础值断言,如字符串 NotBeNullOrEmpty、Be、Contain,数字 Be、BeGreaterThan 并可链式 And.BeLessThan,布尔 BeTrue、BeFalse;异常测试,同步使用 builder.Invoking(b => b.Build()).Should().Throw<T>().WithMessage("title"),异步使用 await Assert.ThrowsAsync<T>(async () => await ...);集合断言,如 HaveCount、NotBeEmpty、ContainSingle(e => ...)、AllSatisfy、ContainInOrder。

关键概念:Should() 是所有断言的入口;And 用于链式多个断言;Which/WhoseValue 访问嵌套值,例如 ContainKey("x").WhoseValue.Should().Be("y");Invoking 测试同步异常;Awaiting 测试异步异常。

常见模式:对象属性断言可组合 NotBeNull、Be、ContainKey 与 WhoseValue;时间断言使用 BeCloseTo(DateTime.UtcNow, TimeSpan.FromSeconds(1))、BeOnOrAfter 与 BeOnOrBefore;验证结果断言使用 result.Validation.IsValid.Should().BeTrue()、result.Errors.Should().BeEmpty(),失败时断言 Success 为 False 且 Errors 非空并包含特定文本。

相关技能与文档:可参考 xunit 技能了解测试框架模式,参考 moq 技能进行依赖模拟。可通过 Context7 获取最新文档,使用 mcp__context7__resolve-library-id 搜索 fluent-assertions,优先选择以 /websites/ 开头的网站文档,再用 mcp__context7__query-docs 以解析出的库 ID 查询,库 ID 为 /fluentassertions/fluentassertions,推荐查询包括基础断言、集合断言、异常测试与对象等价 BeEquivalentTo。