作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有如下代码,它检查我的命名函数是否已使用某些参数调用:
const wrapper = mount(<PromotionsContent {...props} />);
let params = new URLSearchParams();
params.append('page', 0);
params.append('size', '20');
expect(getPromotions).toHaveBeenCalledWith(params);
这里 getPromotions 是一个命名函数,它在测试文件中被正确导入和模拟。这之前工作得很好,但在升级我的应用程序以使用最新的 CreateReactApp(带有 React 16.12.0)之后,它开始崩溃。我还在调用 getPromotions 之前将参数记录到控制台,我实际上可以看到正确的值,但在测试中它只是打印如下并失败:
expect(jest.fn()).toHaveBeenCalledWith(...expected)
- Expected
+ Received
- {},
+ {},
Number of calls: 1
令人惊讶的是,如果我直接使用被调用的参数,如下所示,它会起作用:
const wrapper = mount(<PromotionsContent {...props} />);
let params = new URLSearchParams();
params.append('page', 0);
params.append('size', '20');
let calledParams = getPromotions.mock.calls[0][0];
expect(calledParams.get('page')).toEqual ('0');
expect(calledParams.get('size')).toEqual ('20');
请问有什么线索吗?
最佳答案
我在使用 16.12.0
全新安装的 React 应用程序上尝试了此操作,并且它正常工作。
你能分享更多你的代码吗?
import React, { useEffect } from "react";
import { render } from "@testing-library/react";
import App from "./App";
const MyComponent = ({ getPromotions }) => {
useEffect(() => {
const params = new URLSearchParams();
params.append("page", "0");
params.append("size", "0");
getPromotions(params);
}, []);
return null;
};
describe("Lorem Ipsum", () => {
it("should pass", () => {
const getPromotionsMock = jest.fn();
render(<MyComponent getPromotions={getPromotionsMock} />);
const params = new URLSearchParams();
params.append("page", "0");
params.append("size", "0");
expect(getPromotionsMock).toHaveBeenCalledWith(params);
});
});
关于javascript - 预计 toHaveBeenCalledWith 不适用于最新的 CreateReactApp 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59744567/
我有如下代码,它检查我的命名函数是否已使用某些参数调用: const wrapper = mount(); let params = new URLSearchParams();
我有一个像这样的组件: import React, { Component } from 'react'; import Map from 'ol/map'; import View from 'ol
因此,我有一个托管在 AWS S3 存储桶上的 React 应用程序(它之前还有一个 CloudFront 分布)。使用 GitHub Actions 工作流,我使用 aws-cli s3 sync
我是一名优秀的程序员,十分优秀!