在Mocha测试中导出变量

时间:2018-08-27 13:22:12

标签: node.js mocha

要了解我要做的事情:在执行以下测试之后,我得到了report.json生成的代码以及在before挂钩中生成的令牌,并将报告发送给它的另一个api进行处理。

我有一个mocha测试,其中生成了一个令牌,我需要将此令牌生成与另一个js文件共享。

var token = 'un_assigned';

describe('Comparison', function () {
  token = 'sin asignar';
  before(function (done) {
    getToken('app', function (response) {
      token = response.token;
      done();
    })
  });

  files.forEach(function (file) {
    it('Comparing ' + file, function (done) {
      const id = file.split('./screenshots/')[1];
      compare(file, id, token, function (response) {
        expect(response.TestPassed).to.be.true;
        done();
      });
    });
  });

  after(function (done) {
    done();

  })
});


exports.tokenApi = function getToken(){
  console.log(token);
  return token;
};

运行测试后,我需要将generate令牌传递给另一个JS文件,以便我可以处理摩卡报告。我尝试使用导出,但是当我调用函数时,它将调用测试。我是JS菜鸟,我想念些什么吗?。

1 个答案:

答案 0 :(得分:1)

使用文件系统(推荐)

使用fs模块将令牌写入文件,然后根据需要读取此令牌。

const fs = require('fs')
    exports.tokenApi = function getToken(){
      console.log(token);
     // write token to file here
      fs.writeFile('token.txt', token, (err) => console.error(err))
      return token;
    };

或使用节点模块语法

除了没有正确导出模块之外,您已经关闭了,必须使用node module syntax

tokenApi = function getToken(){
  console.log(token);
  return token;
};
module.exports=tokenApi

但是,第二种方法不适用于您的示例,因为只有在测试运行后才能设置令牌。

除非您打算运行测试,否则您不应该导入测试套件,因为标准的javascript文件不会对mocha命令有任何了解。