我试图学习依赖注入,并遇到单元测试应用程序时出现问题。依赖注入解决方案和单元测试
我正在写一个控制台应用程序,创建并在main()初始化的容器,它可作为一个Program.Container
get-property
,在我的应用程序,以便在任何地方我可以打电话Program.Container.Resolve<..>()
。
我有一个ServiceValidator类是这样的:
public class ServiceValidator
{
private readonly IConfiguration _configuration;
private readonly IService _service;
public ServiceValidator(IConfiguration configuration, IService service)
{
_configuration = configuration;
_service = service;
}
在另一大类我用
ServiceValidator serviceValidator = Program.Container.Resolve<ServiceValidator>();
serviceValidator.VerifyVersion();
这引起了我的问题,在单元测试Program.Container.Resolve
通话,因为它不已设置。
那是一个不好的做法,呼吁解决在容器上?我可以在Main()
中创建ServiceValidator实例并传递该对象,但这似乎很愚蠢,因为它会导致只传递给下一个方法的对象的很多参数。
所以我想这是可以接受的一类中调用化解,但随后的容器必须配置为单元测试。我应该怎么做,我应该把容器移到另一个地方而不是Program课程吗?你会推荐什么?
如果它的事项,我使用的是团结和C#
感谢:-)
我还是想看看如何解决这个问题一个很好的模式,而又不使程序类... – 2009-05-04 13:38:33
的依赖>我存话费这样的.. 你的意思是“决心”调用容器? – Karsten 2009-05-04 13:40:59
是的,我的意思是'解决'呼叫集装箱。 – 2009-05-04 14:44:05