【问题标题】:Autofac configuration validationAutofac 配置验证
【发布时间】:2016-02-02 12:26:46
【问题描述】:

Autofac 是否有等效于 StructureMap 的 AssertConfigurationIsValid 方法?还是在创建容器时进行配置验证?

我相信 AssertConfigurationIsValid 方法会检查容器是否可以创建所有已配置的服务。显然,它无法发现更细微的配置错误——例如与范围相关的错误——但很高兴知道我们正在尽我们所能来防止可能在运行时出现的问题。

【问题讨论】:

    标签: configuration autofac


    【解决方案1】:

    我认为 Autofac 没有验证,如果无法解析服务,则会在运行时引发异常。这可能很有用,但我总是倾向于编写单元测试来验证我的容器,或者更确切地说是我的modules,包含我期望它拥有的那些服务。单元测试足以弥补容器验证的不足。

    这些测试通常遵循以下模式

    1. 用被测模块创建一个容器
    2. 对于每个需要的服务,测试container.IsRegistered
    3. 尽可能测试container.Resolve

    【讨论】:

    • 我轻松实现了您建议的单元测试,现在我对 Autofac 没有内置验证感到不太痛心。感谢您的出色回答。
    • @Serilla - 很高兴听到这个消息。祝你好运!
    • 如何在使用工厂生成服务的情况下做到这一点?例如。我有一项服务依赖于其他一些服务和一个字符串。该字符串未在 autofac 中注册,我通常使用带有该字符串的工厂作为参数来解析服务。目前我的单元测试忽略了这个工厂并在服务上失败,因为所需的字符串没有注册。
    • @SamuelDebruyn 在这种情况下,我的测试将解析有问题的工厂,使用一些有意义的输入调用它,并验证输出。您还可以进行测试,以验证工厂在给定无效输入时是否以有意义的方式失败。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2019-11-08
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多