为了账号安全,请及时绑定邮箱和手机立即绑定

JS 模块导出不适用于 Jest

JS 模块导出不适用于 Jest

摇曳的蔷薇 2022-12-02 15:57:51
我正在尝试设置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按预期识别,我该怎么做?
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

你有没有尝试过:

function sum() { ... }
exports.sum = sum;

在你的测试中:

const { sum } = require('../controllers/a');

因为当您在测试中导入文件时,您需要查看 require() 返回的对象内部以找到正确的函数(此处为 sum)。


查看完整回答
反对 回复 2022-12-02
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

如果你这样做exports.sum = sum;

您需要像这样导入它:const {sum} = require('../controllers/a');


查看完整回答
反对 回复 2022-12-02
  • 2 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信