我正在处理一些回购。并添加重构以将一些功能提取到类
中问题是 - 我更喜欢使用来自外部的传递依赖(DI)。但我发现它不是node.js应用程序的常见模式。
所以问题是 - 是否有任何好的例子(链接到repos),其中人们使用DI提供依赖。
相反的意见是 - “我们总是可以使用def view_Course(myCourse):
print("Courses' Name: ",myCourse.getName())
print("Courses' Number: ",myCourse.getNumber())
print("Courses' Units: ",myCourse.getUnits())
print("Courses' Instructor: ",myCourse.getInstructor())
main()
模块来模拟依赖”
P.S 我建议的代码示例是
proxyquire
而不是
// use
const inst = new Cls(getDep1(), getDep2());
// where getDep1 / getDep2 provide dependencies from side modules
问题是关于node.js相关项目中的参数
答案 0 :(得分:0)
你的例子很清楚。如果要在不使用proxyquire或mockery或其他需要修补程序的情况下在测试中为类依赖项配置存根/模拟,则必须在代码中提供另一个入口点。
您可以在示例中明确使用DI:
Cls
它可以自行生存,然后您的调用代码将负责导入您的类,配置其依赖项并正确实例化它。这样,您的const dep1 = require('dep1');
const dep2 = require('dep2');
module.exports = function Cls() {
this.dep1 = dep1;
this.dep2 = dep2;
}
就会被隔离,并且可以自行测试。
您还可以公开需要作为公共属性处理的依赖项:
Cls
这可能允许定义Cls
的模块也包含将其与其deps相关联的代码,同时仍允许您的单元测试使用mock / stub对象轻松配置var cls = new Cls();
cls.dep1 = new SomeStub();
cls.dep2 = new SomeStub();
cls.exercise();
。这依赖于要求无副作用:(
newDB.myTable (field)