gpt4 book ai didi

javascript - 预计 toHaveBeenCalledWith 不适用于最新的 CreateReactApp 设置

转载 作者:行者123 更新时间:2023-12-03 13:37:26 27 4
gpt4 key购买 nike

我有如下代码,它检查我的命名函数是否已使用某些参数调用:

    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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com