![](/img/trans.png)
[英]Jest - ReferenceError: define is not defined for a simple test file
[英]Jest - ReferenceError: define is not defined
我正在尝试使用jest开始进行一些单元测试但是我遇到了很多人似乎已经得到的这个错误,但我似乎无法弄明白。
这是我正在尝试做的事情(我发现不支持requirejs):
jest.mock("../widgets/", () => {
return <button>button</button>;
});
describe('TextInput', () => {
describe('when user inputs a value', () => {
it('calls correct function to handle change', () => {
const handleChange = jest.fn();
const value = "test"
const wrapper = shallow(<TextInput handleChange={handleChange} />);
const textInputElement = wrapper.find("#textfield");
textInputElement.simulate('change', {target: { value }})
expect(handleChange).toHaveBeenCalledTimes(1);
});
});
});
import React from "react";
import ReactDOM from "react-dom";
import * as TestUtils from "react-dom/test-utils";
import { TextInput } from "../widgets/";
这是我的package.json
"jest": {
"collectCoverageFrom": [
"src/**/*.js"
],
"setupFiles": [
],
"testMatch": [
"**/src/**/?(*.)+(test).js"
],
"testEnvironment": "node",
"testURL": "http://localhost",
"transform": {
"^.+\\.(js)$": "./node_modules/babel-jest",
"^.+\\.css$": "./config/jest/cssTransform.js",
"^(?!.*\\.(js|jsx|mjs|css|json)$)": "./config/jest/fileTransform.js"
},
"transformIgnorePatterns": [
"[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$"
],
"moduleNameMapper": {
"^react-native$": "react-native-web"
},
"moduleFileExtensions": [
"web.js",
"js",
"json",
"web.jsx",
"jsx",
"node",
"mjs"
]
}
在运行jest时,我收到错误ReferenceError: define is not defined
,这是一个更详细的错误:
我将不胜感激任何帮助! 过去几天一直把头发拉过来:-(
编辑 :刚才意识到根据docs toHaveBeenCalledTimes
其实也应该工作。 无论如何,你可以试试mock.calls.length
。
据我所知,关于jest功能的断言模拟不能像这样工作
expect(handleChange).toHaveBeenCalledTimes(1);
你应该试一试
expect(handleChange.mock.calls.length).toBe(1);
如文档中所述
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.