0

我的 nodeJs 代码中有两种方法,例如

function method1(id,callback){
  var data = method2();
  callback(null,data);
}

function method2(){
  return xxx;
}

module.exports.method1 = method1;
module.exports.method2 = method2;

使用方法1测试功能SinonMocha我必须使用stub方法2。为此,它需要将方法 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 is not a function。

有什么办法可以摆脱thismodule.exports看起来有问题。

如果我错过任何其他信息,请告诉我..

4

2 回答 2

0

使用箭头函数更正此方法

在你的情况下

function method1(id,callback){
  var data = this.method2();
  callback(null,data);
}

可以改为

  let method1 = (id,callback)=>{
    var data = this.method2();
    callback(null,data);
  }
于 2020-10-03T07:53:01.943 回答
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。

module.exports = {
    method1: method1,
    method2: method2
}

并以同样的方式要求。

编辑:

请注意,如果您的版本支持它,您还可以在导出中添加一些语法糖:

module.exports = {
    method1,
    method2
}

这通常适用于对象文字表示法。

于 2016-07-28T14:10:55.490 回答