Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Getting`TypeError:jest.fn不是函数`_Javascript_Jasmine_Mocking_Jestjs - Fatal编程技术网

Javascript Getting`TypeError:jest.fn不是函数`

Javascript Getting`TypeError:jest.fn不是函数`,javascript,jasmine,mocking,jestjs,Javascript,Jasmine,Mocking,Jestjs,我试图使用Jest创建以下单元测试 jest.dontMock("pointsAwardingActions.js"); describe("points awarding actions", () => { describe("award points", () => { it("should dispatch begin ajax action", () => { var

我试图使用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测试之后,我得到了以下错误

TypeError:jest.fn不是函数

这是我的
包.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",
    ...
  }
}
{
“脚本”:{
“测试”:“开玩笑”
},
“作者”:“alayor”,
“许可证”:“ISC”,
“笑话”:{
“scriptPreprocessor”:“/节点\模块/babel jest”,
“testFileExtensions”:[“spec.js”],
“moduleFileExtensions”:[“js”],
“保险范围”:“真实”
},
“依赖项”:{
“巴别塔cli”:“6.8.0”,
“巴别塔核心”:“6.8.0”,
“巴别塔笑话”:“^6.0.1”,
“巴别塔装载机”:“6.2.4”,
“巴别塔插件反应显示名称”:“2.0.0”,
“巴别塔polyfill”:“6.8.0”,
“babel-preset-es2015”:“6.6.0”,
“巴别塔预设反应”:“6.5.0”,
“巴别塔预设反应hmre”:“1.1.1”,
“预期”:“1.19.0”,
“快车”:“4.13.4”,
“笑话”:“^0.1.40”,
“jest cli”:“^0.8.1”,
...
}
}

我犯这个错误的原因可能是什么?

您使用的是一个非常旧的笑话版本。Jest从那时起有了显著的改进,我强烈建议您更新到最新版本


而且他们现在也不做自动模拟。

文档没有提到
jest
不是
require('jest'),这有点奇怪
需要('jest-mock')
,以下代码应适用于v22:

const jest = require('jest-mock');
const spy = jest.fn();
在每个测试文件中,都会自动将其包含在范围内,因此无需显式导入它。如果确实要直接导入
jest
对象,则需要通过以下方式导入jest mock模块,而不是jest cli模块:

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

const mock = jest.fn();

它已经包含在Jest软件包中,因此请确保键入的内容正确,如下所示:(
“mockReturnValue”


它将清除您的错误。

“jest对象自动位于每个测试文件的作用域中。”@RickHanlonII每个测试文件。。。但不是mock目录中的文件。另一种情况很有用:在节点的控制台上玩时,您需要它specifically@TFischer你试过瑞克的答案了吗?这就是我要找的,这个solve spyOn不是一个函数,fn也不是一个函数我对redux和jest很陌生,我无法描述搜索这个的小时数。你救了我的命,但这并不能回答这个问题。一旦你有足够的钱,你将能够;相反-