【问题标题】:How to create custom FluentAssertion error messages?如何创建自定义 FluentAssertion 错误消息?
【发布时间】: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 构造函数中使用延迟上下文函数,但这会导致修改后的闭包。

【问题讨论】:

    标签: fluent-assertions


    【解决方案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");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-04-01
      • 2021-07-04
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多