在模块中testingnode.js类
我正在写一个node.js模块,我的模块有一个私有类。
我试图写这个类的testing,但不知道如何做到这一点。
我的模块看起来像这样
var main = function(get_item){ var main_item = new MyClass(get_item); 返回main_item } 函数MyClass(item){ this.item = item; 返回this.init(); } MyClass.prototype = { init:function(){ 返回find_item(); }, find_item:function(){ //做了一堆东西来查找一个项目 }, update_item:function(){ / /一堆东西来更新项目 }, //这里有更多的方法 } module.exports = main //可能打开和closurestesting module.exports = new MyClass // ??? 不知道如何做到这一点
然后在我的spec文件夹里
var main = require(“./ modules / myClass”); 描述(“get item”,function(){ 它(“应该返回一个项目”,function(){ var item_obj = main.get_item(“first_item”); 期望(item_obj.index).toBe(1); }) });
我猜他们是我创build一个新的类的方式,但我不知道如何,或者如何导出类。
使用你现在正在做的,你将不得不有
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()
来创build一个类的实例。