在 Mocha 测试中导出变量

Export variable in Mocha test

为了阐明我正在尝试做的事情是:在下面的测试是 运行 之后,我得到了生成的 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;
};

测试后 运行 我需要将生成令牌传递给另一个 JS 文件,以便我可以处理 mocha 报告。我尝试使用导出但是当我调用我的函数时它调用我的测试。我是一个 JS 菜鸟,我有什么遗漏吗?

使用文件系统(推荐)

使用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

但是第二种方法不适用于您的示例,因为只有在测试 运行.

之后才会设置令牌

此外,除非您打算进行 运行ning 测试,否则您不应导入测试套件,因为标准 javascript 文件不会了解 mocha 命令。