Javascript Getting`TypeError:jest.fn不是函数`
我试图使用Jest创建以下单元测试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.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很陌生,我无法描述搜索这个的小时数。你救了我的命,但这并不能回答这个问题。一旦你有足够的钱,你将能够;相反-