我的nodeJs代码中有两个方法,如
function method1(id,callback){
var data = method2();
callback(null,data);
}
function method2(){
return xxx;
}
module.exports.method1 = method1;
module.exports.method2 = method2;
使用Sinon
和Mocha
测试函数method1我必须使用stub
方法method2。
需要将方法method2称为
function method1(id,callback){
var data = this.method2();
callback(null,data);
}
此
的测试代码describe('test method method2', function (id) {
var id = 10;
it('Should xxxx xxxx ',sinon.test(function(done){
var stubmethod2 = this.stub(filex,"method2").returns(data);
filex.method1(id,function(err,response){
done();
})
})
})
使用此测试用例传递,但代码停止使用错误 this.method2不是函数。
有什么方法可以摆脱看似错误的this
或module.exports
。
如果我错过任何其他信息,请告诉我。
答案 0 :(得分:0)
您没有正确使用module.exports。
将您的代码更改为:
export function method1(id,callback){
var data = method2();
callback(null,data);
}
export function method2(){
return xxx;
}
然后:
const MyFuncs = require('path_to_file_with_methods');
您需要的方法,如下所示:
MyFuncs.method1(){}
MyFuncs.method2(){}
您还可以按以下方式使用module.exports。
module.exports = {
method1: method1,
method2: method2
}
并以同样的方式要求。
修改强>
请注意,如果您的版本支持它,您还可以在导出中使用一些语法糖:
module.exports = {
method1,
method2
}
一般来说,它适用于对象文字符号。
答案 1 :(得分:0)
使用箭头功能更正此方法
以您的情况
function method1(id,callback){
var data = this.method2();
callback(null,data);
}
可以更改为
let method1 = (id,callback)=>{
var data = this.method2();
callback(null,data);
}