gpt4 book ai didi

reactjs - 如何监视 Jest 中的默认 prop 函数

转载 作者:行者123 更新时间:2023-12-03 14:17:00 25 4
gpt4 key购买 nike

我正在尝试测试一个默认的 prop,它是一个函数类型,但不知道如何使用 Jest 模拟或 spy 来做到这一点:

尝试以下测试:

it("should call default toggle function prop on click of footer button", () => {
const wrapper = shallow(
<InfoModal
isOpen={true}
message="Primary message"
secondaryMessage="Secondary message"
/>
);
const footerButton = wrapper.find("ModalFooter Button");
const fn = jest.spyOn(wrapper.props(), "toggle");
footerButton.simulate("click");
wrapper.update();
expect(fn).toHaveBeenCalled();
});

它说TypeError:无法分配给对象“[object Object]”的只读属性“toggle”,其中toggle是InfoModal的默认属性的函数。

我们如何测试已设置为默认值而非用户定义的函数属性。

最佳答案

您可以像静态 Prop 一样访问defaultProps;

function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}

App.defaultProps = {
check: () => console.log('i am working')
}

App.defaultProps.check()

编辑:

你可以像这样监视它;

const spy = jest.spyOn(App.defaultProps, 'check');
const RenderedApp = shallow(<App />);
RenderedApp.simulate('click');
expect(spy).toHaveBeenCalled();

所以改变这一行

const fn = jest.spyOn(wrapper.props(), "toggle");

const fn = jest.spyOn(wrapper.defaultProps, "toggle");

会为你解决问题。

https://codesandbox.io/s/zen-morning-881ny

关于reactjs - 如何监视 Jest 中的默认 prop 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58240924/

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