2017-09-07 15 views
1

jestを使用して、以下の単体テストを作成しようとしています。`TypeErrorの取得:jest.fnは関数ではありません。 '

jest.dontMock("pointsAwardingActions.js"); 
describe("points awarding actions",() => { 
    describe("award points",() => { 
    it("should dispatch begin ajax action",() => { 
     var pointsAwardingActions = require("pointsAwardingActions.js"); 
     const mockedDispatch = jest.fn(); 
    }); 
    }); 
}); 

npm testの実行後に次のエラーが表示されます。

TypeError: jest.fn is not a function

これは私のpackage.jsonのいくつかの部分です。

{ 
    "scripts": { 
    "test": "jest" 
    }, 
    "author": "alayor", 
    "license": "ISC", 
    "jest": { 
    "scriptPreprocessor": "<rootDir>/node_modules/babel-jest", 
    "testFileExtensions": ["spec.js"], 
    "moduleFileExtensions": ["js"], 
    "collectCoverage": "true" 
    }, 
    "dependencies": { 
    "babel-cli": "6.8.0", 
    "babel-core": "6.8.0", 
    "babel-jest": "^6.0.1", 
    "babel-loader": "6.2.4", 
    "babel-plugin-react-display-name": "2.0.0", 
    "babel-polyfill": "6.8.0", 
    "babel-preset-es2015": "6.6.0", 
    "babel-preset-react": "6.5.0", 
    "babel-preset-react-hmre": "1.1.1", 
    "expect": "1.19.0", 
    "express": "4.13.4", 
    "jest": "^0.1.40", 
    "jest-cli": "^0.8.1", 
    ... 
    } 
} 

私はそのエラーを受けている可能性があります。

答えて

3

非常に古いJestのバージョンdon’t support jest.fnを使用しています。 Jestはそれ以来大幅に改善されており、最新のバージョンにアップデートすることを強くお勧めします。

また、オートモックも行っていません。

+1

私は17.0.2上だと、これと同じエラーを見て。 – Swordfish0321

+1

私は21.2.1にあり、この同じエラーが表示されます – TFischer

-1

ドキュメントがjestrequire('jest');しかしrequire('jest-mock')ではないことを言及されていない、次のコードは、V22に取り組むべきだと少し奇妙です:

const jest = require('jest-mock'); 
const spy = jest.fn(); 
+1

"jestオブジェクトは自動的にすべてのテストファイル内の有効範囲にあります。" https://facebook.github.io/jest/docs/ja/jest-object.html –

1

jest objectは、すべてのテストファイル内スコープで自動的にあるので、それを明示的にインポートする必要はありません。あなたが直接冗談オブジェクトをインポートしたい場合は、経由して、冗談-モックモジュール、ない冗談-cliのモジュールをインポートする:

// Not necessary inside a Jest test file 
import jest from 'jest-mock'; 

const mock = jest.fn(); 
関連する問題