簡體   English   中英

在React Native項目中開玩笑進行單元測試(“ Not a function”錯誤)

[英]Unit testing with jest in React Native project (“Not a function” error)

我正在做一個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關鍵字導出,因此需要將導入內容放在大括號中。 您只能有一個默認導出,因此這種方法很有意義。

我發生是因為您相對於導入錯誤地導出了函數。 你應該這樣導出

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';

您導入的功能錯誤。 您不能import sum from '../src/utils/FakeUtils.js'; import subtract from '../src/utils/FakeUtils.js' 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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM