javascript - 在 React Native 项目中使用 jest 进行单元测试 ("Not a function"错误)

标签 javascript unit-testing react-native ecmascript-6

我正在开发一个 React Native 项目 (v0.46)。我已经能够成功编写组件快照测试,但我在单元测试 JavaScript ES6 函数方面遇到了困难。

这是我在 FakeUtils.js 中的函数:

export function sum(a, b) {
    return a + b;
}

export function subtract(a, b) {
    return a - b;
}

这是我对它们的测试:

import sum from '../src/utils/FakeUtils.js';
import subtract from '../src/utils/FakeUtils.js';

describe('sum', () => {   
    it('should sum 2 nums', () => {
        expect(sum(1,2)).toBe(3);
    });
});

describe('subtract', () => {   
    it('should subtract 2 nums', () => {
        expect(subtract(2,1)).toBe(1);
    });
});

当我运行 npm test 时,这是我收到的输出:

FAIL  __tests__/FakeUtilsTest.js
  ● sum › should sum 2 nums

    TypeError: (0 , _FakeUtils2.default) is not a function

      at Object.<anonymous> (__tests__/FakeUtilsTest.js:6:31)
      at tryCallTwo (node_modules/promise/lib/core.js:45:5)
      at doResolve (node_modules/promise/lib/core.js:200:13)
      at new Promise (node_modules/promise/lib/core.js:66:3)
      at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)
      at tryCallOne (node_modules/promise/lib/core.js:37:12)
      at node_modules/promise/lib/core.js:123:15

  ● subtract › should subtract 2 nums

    TypeError: (0 , _FakeUtils2.default) is not a function

      at Object.<anonymous> (__tests__/FakeUtilsTest.js:12:31)
      at tryCallTwo (node_modules/promise/lib/core.js:45:5)
      at doResolve (node_modules/promise/lib/core.js:200:13)
      at new Promise (node_modules/promise/lib/core.js:66:3)
      at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)
      at tryCallOne (node_modules/promise/lib/core.js:37:12)
      at node_modules/promise/lib/core.js:123:15

知道我在这里做错了什么吗?

最佳答案

你的导入语句有点不对劲。试试这个:

import { sum, subtract } from '../src/utils/FakeUtils.js';

由于您没有使用 default 关键字导出,因此您需要将导入内容放在花括号中。您只能有一个默认导出,因此这种方法很有意义。

关于javascript - 在 React Native 项目中使用 jest 进行单元测试 ("Not a function"错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46476582/

相关文章:

ios - 为 react-native ios 应用程序构建 ci/cd 管道 : How to run expo build in gitlab-ci?

Javascript 使用变量调用另一个变量

javascript - jQuery 和 Canvas 加载行为

unit-testing - 如何用 Jest 模拟导入

visual-studio - Visual Studio 中未启用与测试用例的关联

android - Mockito Uri.parse 总是返回 null

javascript - 列出数组中的聊天项目 React Native

JavaScript 制作快速运行的图像幻灯片?

javascript - 将 img src 设置为不变值的性能?

javascript - ASP.NET MVC 5 : Make a select required based on the selected option of another select