如何创建自定义 FluentAssertion 错误消息?
Posted
技术标签:
【中文标题】如何创建自定义 FluentAssertion 错误消息?【英文标题】:How to create custom FluentAssertion error messages? 【发布时间】:2021-10-29 04:12:27 【问题描述】:我有一个看起来像这样的测试:
using (new AssertionScope())
foreach (var parameterType in parameterTypes)
var fooType = typeof(IFoo<>);
var genericType = providerType.MakeGenericType(parameterType);
serviceProvider
.GetService(fooType)
.Should()
.NotBeNull($"all Foo types should be registered");
测试失败导致此消息:
预期 serviceProvider.GetService(genericProviderType) 不是
,因为所有 Foo 类型都应该注册。
但是,我希望消息说:
预期 IFoo
不是 ,因为所有 Foo 类型都应该注册。
(我已经有了美化类型名的方法 - type.GetPrettyName
)
根据文档和源代码,我似乎需要找到一种方法来修改主题/标识符(不是 100% 确定),但我找不到这样做的方法。
我也尝试在 AssertionScope 构造函数中使用延迟上下文函数,但这会导致修改后的闭包。
【问题讨论】:
【参考方案1】:using (new AssertionScope())
foreach (var parameterType in parameterTypes)
var fooType = typeof(IFoo<>);
var genericType = providerType.MakeGenericType(parameterType);
using _ = new AssertionScope(fooType.GetPrettyName());
serviceProvider
.GetService(fooType)
.Should()
.NotBeNull($"all Foo types should be registered");
【讨论】:
以上是关于如何创建自定义 FluentAssertion 错误消息?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 FluentAssertion 测试一个对象是不是等同于另一个已设置属性 solidcolorbrush 的对象
如何检查是不是可以在 Fluent Assertion 中使用 ContainValue 验证类型类的字典