WcfOperationLifestyle简单注入器单元测试

本文关键字:单元测试 注入器 简单 WcfOperationLifestyle | 更新日期: 2023-09-27 17:55:00

如何对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操作"方式,但是该实例是在WCF操作的上下文之外请求的。这完全有道理,因为测试运行不是WCF环境。

WcfOperationLifestyle简单注入器单元测试

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

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

对于测试,最方便的方式可能是LifetimeScopeLifestyle。你可以用container.BeginLifetimeScope()的using块来封装GetInstance调用。

请注意,Verify方法在内部启动它自己的作用域,并且该方法将为您做很多测试。它检查是否可以构建所有的注册,并检查您很难发现的常见配置错误。