2017-09-28 12 views
0

私はReact Nativeプロジェクト(v0.46)で作業しています。私は正常にコンポーネントのスナップショットのテストを書くことができましたが、私はトラブルユニットテストのJavaScript ES6機能のまわりで私の頭をラップを抱えています。ここでReact Nativeプロジェクト( "Not a function"エラー)のjestによるユニットテスト

は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のテストを実行すると、これは私が受け取る出力されます。

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 

私はここで間違ってやっている任意のアイデアは?

+0

..: は、あなたのケースでは、あなたがをインポートする必要があるように、機能をデフォルトではありません'。 'function sum(){/ * stuff * /}'の代わりに 'function sum(){/ * stuff * /}'を試してみたら、ファイルの最後に 'module.exports .sum = sum'? –

答えて

1

あなたのimport文は少し離れています。代わりにこれを試してみてください:

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

私にそれを打つ笑 –

1

それをインポートし、それをエクスポートする必要があります。それは1つのエクスポートされたオブジェクトでモジュールをインポートすると容易にするためにそのように動作します

default export sum; 

:ようにあなたは、デフォルトの関数をエクスポートしている場合を除き あなたはimport sum from '../src/utils/FakeUtils.js'; import subtract from '../src/utils/FakeUtils.js'

を行うことはできません。あなたの輸出の少なくとも** 1 **この `輸出のデフォルトの関数のようにdefaultをする必要があるため、この問題が発生した

import {subtract,sum} from '../src/utils/FakeUtils.js' 
関連する問題