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;
};
运行测试后,我需要将生成令牌传递给另一个 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;
};
或者使用节点模块语法
除了没有正确导出模块之外,您已经很接近了,您必须使用节点模块语法
tokenApi = function getToken(){
console.log(token);
return token;
};
module.exports=tokenApi
但是,第二种方法不适用于您的示例,因为只有在测试运行后才会设置令牌。
此外,除非您打算运行测试,否则不应导入测试套件,因为标准 javascript 文件将不了解 mocha 命令。
推荐阅读
- docker - W:无法获取 http://httpredir.debian.org/debian/dists/jessie-updates/InRelease 无法找到
- javascript - 纯 JS 的自动幻灯片放映
- java - 如何在 Visual 2017 解决方案中包含 proxygen 的“目标”文件夹?
- java - 扩大冗长活动序列的最佳方式是什么?
- c# - Entity Framework Core 修改期间的临时值错误
- php - 分手后在debian 9上重新安装php
- syntax-error - Tableau case when 语句 - 语法无效(缺少标识符)
- powershell - 如何在 Powershell 中设置 TLS 1.1?
- c++ - MSVC:推断指向具有 const 和非常量重载的成员函数的指针
- linux - 将文件夹移动到unix中按字母顺序排列的子目录