WcfOperationLifestyle简单的注射器单元测试

时间:2016-07-05 22:05:42

标签: c# wcf unit-testing simple-injector

如何对WcfOperationLifestyle容器进行单元测试?我有我的MyBootstrapper课程

container = new Container();    
container.Options.DefaultScopedLifestyle = new WcfOperationLifestyle();
...
container.Register<IService, Service>(Lifestyle.Scoped);

根据http://simpleinjector.readthedocs.io/en/latest/wcfintegration.html,但是当我进行单元测试时

var actual = MyBootstrapper.Container.GetInstance<IService>();

我得到了

IService注册为“WCF Operation”生活方式,但实例是在WCF操作的上下文之外请求的。 这完全有意义,因为测试运行不是WCF环境。

1 个答案:

答案 0 :(得分:2)

DefaultScopedLifestyle属性的整个ide使得在不同的上下文中重用配置变得更加容易,例如单元测试。

您应该做的是为CreateContainer方法提供范围生活方式。这样,WCF启动代码和测试代码都可以使用自己的范围生活方式。

对于测试,最方便的生活方式可能是LifetimeScopeLifestyle。您可以使用container.BeginLifetimeScope()的使用块来包含对GetInstance的调用。

请注意Verify方法在内部启动自己的范围,此方法将为您进行大量测试。它检查是否可以构建所有注册并检查很难找到的常见配置错误。