希望有人可以在这里指导我正确的方向我正在使用带有 Alsatian 测试框架的 inversifyJS
基本上设计要求使用多种服务,包括数据库和其他 api 客户端,我认为让 IOC 到位来管理依赖项是个好主意
我在使用 Alsatian 框架时面临的问题是属性注入或构造函数注入都不起作用,只能从容器工作中手动解决它
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 才能运行,进入项目目录并输入:
yarn install
yarn run ts-node Tests/runner.ts --tap
我试图保持代码结构化,所以如果有人有任何想法可以做些什么来让构造函数注入工作,那就太好了