Jest 测试模拟函数 return 未定义(创建 React 应用程序项目)
Jest testing mock functions return undefined (create react app project)
我正在开玩笑地为一个小型 React 应用开发一个测试用例。
我已经在 describe 测试块的范围内声明了一个模拟函数。
当我 运行 在调试模式下进行测试时,我在接收模拟函数的 React 组件内的一个断点处停止了,该模拟已声明但实现未定义。
有人知道这种行为的原因吗?
非常感谢!!!
describe("Test App component", () => {
describe("Test Component rendering", () => {
const mockUtils = {
debounceFunc: jest.fn((func) => {
return func;
}),
isSomeStringEmpty: jest.fn(),
confirmAction: jest.fn(),
};
test(`when render App component, then wrapper element should be rendered`, () => {
render(<App utils={mockUtils} apiService={mockApiService} />);
let appDiv = screen.getByTestId("app-test");
expect(appDiv).toBeInTheDocument();
});
});
我找到了该行为的答案。
原因是我在这个项目中使用了 creat-react-app,默认情况下在 react-scripts node_modules/react-scripts/scripts/utils/createJestConfig.js
.
开玩笑的配置设置为 "resetMocks": true
这意味着在每个测试笑话之前都会重置所有模拟。
默认 JEST 没有配置 creat-react-app "resetMocks": false
。
要更改此配置,您需要做的就是在 package.json 的根级别添加此条目 "jest": { "resetMocks": false }
。package.json example
我正在开玩笑地为一个小型 React 应用开发一个测试用例。
我已经在 describe 测试块的范围内声明了一个模拟函数。
当我 运行 在调试模式下进行测试时,我在接收模拟函数的 React 组件内的一个断点处停止了,该模拟已声明但实现未定义。
有人知道这种行为的原因吗?
非常感谢!!!
describe("Test App component", () => {
describe("Test Component rendering", () => {
const mockUtils = {
debounceFunc: jest.fn((func) => {
return func;
}),
isSomeStringEmpty: jest.fn(),
confirmAction: jest.fn(),
};
test(`when render App component, then wrapper element should be rendered`, () => {
render(<App utils={mockUtils} apiService={mockApiService} />);
let appDiv = screen.getByTestId("app-test");
expect(appDiv).toBeInTheDocument();
});
});
我找到了该行为的答案。
原因是我在这个项目中使用了 creat-react-app,默认情况下在 react-scripts node_modules/react-scripts/scripts/utils/createJestConfig.js
.
开玩笑的配置设置为 "resetMocks": true
这意味着在每个测试笑话之前都会重置所有模拟。
默认 JEST 没有配置 creat-react-app "resetMocks": false
。
要更改此配置,您需要做的就是在 package.json 的根级别添加此条目 "jest": { "resetMocks": false }
。package.json example