2010-05-06 82 views
9

Autofac是否具有与StructureMap的AssertConfigurationIsValid方法等效的功能?或者在创建容器时进行配置验证?Autofac配置验证

我相信AssertConfigurationIsValid方法检查容器可以创建所有配置的服务。很明显,它不能提取更多细微的配置错误 - 例如与范围有关 - 但很高兴知道我们正在尽可能地做到尽可能防止可能在运行时出现的问题。

回答

6

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

这些测试通常遵循的

  1. 图案被测
  2. 对于每个所要求的服务,测试container.IsRegistered
  3. 只要有可能,测试创建与所述模块的容器container.Resolve
+0

我容易实施你所建议的单元测试,现在我不觉得太Autocac没有内置验证。感谢您的优秀回答。 – JulianM 2010-05-08 04:39:07

+0

@Serilla - 很高兴听到这个消息。祝你好运! – 2010-05-08 06:48:30

+0

如何使用工厂来生成这些服务?例如。我有一项服务依赖于其他一些服务和一个字符串。该字符串未在autofac中注册,我通常使用具有该字符串的工厂作为参数来解析服务。目前我的单元测试忽略了这个工厂,并且因为所需的字符串没有注册而失败了。 – SamuelDebruyn 2015-12-03 10:17:24