【发布时间】: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 构造函数中使用延迟上下文函数,但这会导致修改后的闭包。
【问题讨论】: