我正在尝试在Jest
环境中设置Node.js
。以下是名为controllers/a.js
的文件中定义的功能:
function sum(a, b) {
return a + b;
}
module.exports = sum;
这是从tests.js
文件访问的:
const sum = require('../controllers/a');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
这很好:
PASS tests/tests.js
√ adds 1 + 2 to equal 3 (5 ms)
但是,如果我如下修改a.js
:
function sum(a, b) {
return a + b;
}
exports.sum = sum;
然后我得到TypeError
:
FAIL tests/tests.js
× adds 1 + 2 to equal 3 (3 ms)
● adds 1 + 2 to equal 3
TypeError: sum is not a function
2 |
3 | test('adds 1 + 2 to equal 3', () => {
> 4 | expect(sum(1, 2)).toBe(3);
| ^
5 | });
尝试了以下导出方式,但都无法通过上述TypeError
:
module.exports.sum = sum;
module.exports = { sum: sum };
exports = sum;
exports = { sum: sum };
我需要导出多个功能以在Jest
中进行测试。如果Jest
无法按预期识别module.exports
,该怎么办?
答案 0 :(得分:3)
您尝试过吗:
function sum() { ... }
exports.sum = sum;
并在您的测试中:
const { sum } = require('../controllers/a');
因为在测试中导入文件时,您需要查看require()返回的对象以找到正确的函数(此处为sum)。
答案 1 :(得分:2)
如果您进行exports.sum = sum;
您需要将其导入,例如:const {sum} = require('../controllers/a');