JS 模块导出不适用于 Jest

我正在尝试设置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 };

我需要导出多个函数以在JestJest如果没有module.exports按预期识别,我该怎么做?


摇曳的蔷薇
浏览 149回答 2
2回答

沧海一幻觉

你有没有尝试过:function sum() { ... } exports.sum = sum;在你的测试中:const { sum } = require('../controllers/a');因为当您在测试中导入文件时,您需要查看 require() 返回的对象内部以找到正确的函数(此处为 sum)。

人到中年有点甜

如果你这样做exports.sum = sum;您需要像这样导入它:const {sum} = require('../controllers/a');
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript