我正在编写一个node.js模块,并且我的模块有一个私有类。
我正在尝试针对此类编写测试,但无法弄清楚该如何做。
我的模块看起来像这样
var main = function(get_item){
var main_item = new MyClass(get_item);
返回main_item
}
函数MyClass(item){
this.item = item;
返回this.init();
}
MyClass.prototype = {
初始化:function(){
返回find_item();
},
find_item:function(){
//做一堆东西来查找一个项目
},
update_item:function(){
//做一堆东西来更新物品
},
//这里有更多方法
}
module.exports =主要
//可能需要打开和关闭进行测试
module.exports = new MyClass // ???不知道该怎么做
然后在我的spec文件夹中
var main = require(“ ../ modules / myClass”);
describe(“获取项目”,function(){
it(“应该退货”,function(){
var item_obj = main.get_item(“ first_item”);
Expect(item_obj.index).toBe(1);
})
});
我猜想它们是我可以在规范中创建新类的方法,但是我不确定如何或如何导出该类。
最佳答案
使用您当前正在做的事情,您将不得不
module.exports = { main: main, MyClass: MyClass }
然后在规范中使用
new mymodule.MyClass
实例化您的类。但是,这意味着您的类的“常规”用户必须执行mymodule.main("Item")
而不是mymodule("Item")
,这会更改模块的原始接口。我不知道我要建议的是模式还是反模式,但这是解决它的一种方法:
module.exports = main;
module.exports.MyClass = MyClass; // only if testing
就是说,您的模块与常规用户的接口保持不变,并且您的规范可以使用
new mymodule.MyClass()
创建该类的实例。