【发布时间】:2020-07-28 23:44:20
【问题描述】:
经过大量研究,我问这个问题
我有这些文件
// connection.js
const mysql = require('mysql');
module.exports = mysql.getConnection();
// a.js
const connection = require('./connection');
function doQuery() {
const q = 'select * from table';
connection.query(q, (err, res) => {
... do some stuff
})
}
module.exports = doQuery;
当我开玩笑测试什么时(删除不必要的东西以便更好地阅读)
// test.js
const jest = require('jest');
const a = require('./a.js');
const connection = {
query: (query, cb) => cb('error', null),
};
jest.mock('./connection.js', () => connection);
test('testing something', () => {
expect(a.doQuery).to.be.true //this is just an example
});
我收到下一个错误
The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.
Invalid variable access: connection
我试过移动同一个文件夹下的文件,有相对路径,绝对路径,移动导入顺序,实在搞不定。
我真的不知道如何解决这个问题,而且我正在从 proxyquire 迁移到 jest,这就是我这样做的原因,我不能再使用 proxyquire。
【问题讨论】:
-
没用。该死的
-
好吧,我使用了外部变量两次或 3 次,并为它们使用了
mock*名称。如果您真的需要它,请尝试不同版本的 Jest,可能是一个错误。 -
这是可行的方法之一,但我已经找到了解决方法。答案已经贴出来了。谢谢你!
标签: jestjs