构造函数注入使用inversifyJS和Alsatian测试框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造函数注入使用inversifyJS和Alsatian测试框架相关的知识,希望对你有一定的参考价值。

希望有人可以指导我朝着正确的方向前进,我正在使用与阿尔萨斯测试框架的inversifyJS

基本上设计要求使用多种服务,包括数据库和其他api客户端,我认为让IOC管理依赖项是个好主意。

我面对阿尔萨斯框架的问题是,属性注入或构造函数注入都不起作用,只能从容器中手动解析它的工作原理

    private resolvedNinja: Warrior;
    // does not inject property
    @inject(ServiceTypes.Warrior) private propertyNinja: Warrior;


    public constructor(
        // does not inject
        @inject(ServiceTypes.Warrior) constructorNinja:Warrior
    ){
        console.log("constructor called");

        // this injects and works
        this.resolvedNinja = container.get<Warrior>(ServiceTypes.Warrior);

        console.log("injected constructor ninja " + constructorNinja);
        console.log("injected property ninja " + this.propertyNinja);
        console.log("resolved ninja " + this.resolvedNinja);

    }

我不知道为什么,如果有人有兴趣检查它,我已经清理并设置了一个小测试项目

https://github.com/dshamim/alsatian-test-ioc

你需要让纱线运行才能运行,转到项目目录并输入:

yarn install

yarn run ts-node Tests/runner.ts --tap

我试图保持代码结构化,所以如果有任何想法可以做什么来使构造函数注入工作,那将是伟大的

答案

悲伤的回答是“你不能”。阿尔萨斯使用new算子来实现测试夹具的类。因此,inverisfy无法知道必须将依赖项注入Fixture类。 (请记住,在使用container.get()实例化类时会注入依赖项)

以上是关于构造函数注入使用inversifyJS和Alsatian测试框架的主要内容,如果未能解决你的问题,请参考以下文章

解读 IoC 框架 InversifyJS

ReactNative进阶(三十一): IoC 框架 InversifyJS解读

使用 Quartz.NET 和 Simple Injector 进行构造函数注入

Spring注入值得2种方式:属性注入和构造注入

Spring注入值得2种方式:属性注入和构造注入

如何使用 Xamarin 和 Autofac 将构造函数依赖项注入 ViewModel?