簡體   English   中英

獲取`TypeError: jest.fn is not a function`

[英]Getting `TypeError: jest.fn is not a function`

我正在嘗試使用 Jest 創建以下單元測試。

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后收到以下錯誤。

類型錯誤:jest.fn 不是函數

這是我的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",
    ...
  }
}

我收到該錯誤的原因可能是什么?

jest對象自動在每個測試文件的范圍內,因此無需顯式導入它。 如果您確實想直接導入jest對象,則需要通過以下方式導入 jest-mock 模塊,而不是 jest-cli 模塊:

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

const mock = jest.fn();

文檔沒有提到jest不是require('jest'); 但是require('jest-mock') ,以下代碼應該適用於 v22:

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

您正在使用不支持jest.fn的非常舊版本的 Jest。 從那時起,Jest 有了顯着的改進,我強烈建議您更新到最新版本。

此外,他們現在不進行自動模擬。

它已經包含在您的 Jest 包中,因此請確保您輸入正確,如下所示:( "mockReturnValue" )。

它會清除你的錯誤。

暫無
暫無

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

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