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

时间:2017-09-28 19:06:36

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

我正在研究React Native项目(v0.46)。我已经能够成功编写组件快照测试,但是我无法围绕单元测试JavaScript ES6函数。

以下是我在FakeUtils.js中的功能:

assign a = b && c;

以下是我对他们的测试:

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

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

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

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);
    });
});

知道我在这里做错了吗?

3 个答案:

答案 0 :(得分:2)

您的导入声明有点偏差。试试这个:

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

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

答案 1 :(得分:1)

我之所以发生这种情况,是因为您导出的函数与导入错误相关。 你应该这样导出

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

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

或以这种方式导入

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

答案 2 :(得分:1)

您导入的功能有误。 你做不到import sum from '../src/utils/FakeUtils.js'; import subtract from '../src/utils/FakeUtils.js'

除非您是默认导出函数,例如:

default export sum;

通过这种方式可以轻松导入带有一个导出对象的模块。 在您的情况下,您需要导入非默认功能,例如:

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