如何测试与酶/开玩笑中的反应中设置状态的组件
假设我需要测试此组件。它通过道具获得了状态和设定者。测试应该是什么样的?
component.jsx
:
export function Component({ isShowing, setShow }) {
return (
<>
<button
onClick={() => {
setShow(!isShowing);
}}
>
Toggle
</button>
{isShowing && <h1>Showing</h1>}
</>
);
}
这是我正在考虑的事情,但不会通过。
component.test.js
:
import Enzyme, { mount } from 'enzyme';
import EnzymeAdapter from 'enzyme-adapter-react-16';
Enzyme.configure({ adapter: new EnzymeAdapter() });
const mountSetup = (props = {}) => {
return mount(<Component {...props} />);
};
const defaultProps = {
isShowing: false,
setShow: () => {},
};
describe('Component works as expected', () => {
test('Component toggles ', () => {
const wrapper = mountSetup(defaultProps);
// expect(wrapper.prop('setShow')).toBeTruthy();
wrapper.find('button').simulate('click');
expect(wrapper.find('h1').text()).toBe("Showing")
wrapper.unmount();
});
});
Let's say I need to test this component. It gets the state and a setter for it through props. What should a test look like?
Component.jsx
:
export function Component({ isShowing, setShow }) {
return (
<>
<button
onClick={() => {
setShow(!isShowing);
}}
>
Toggle
</button>
{isShowing && <h1>Showing</h1>}
</>
);
}
This is something I was thinking about but it doesn't pass.
Component.test.js
:
import Enzyme, { mount } from 'enzyme';
import EnzymeAdapter from 'enzyme-adapter-react-16';
Enzyme.configure({ adapter: new EnzymeAdapter() });
const mountSetup = (props = {}) => {
return mount(<Component {...props} />);
};
const defaultProps = {
isShowing: false,
setShow: () => {},
};
describe('Component works as expected', () => {
test('Component toggles ', () => {
const wrapper = mountSetup(defaultProps);
// expect(wrapper.prop('setShow')).toBeTruthy();
wrapper.find('button').simulate('click');
expect(wrapper.find('h1').text()).toBe("Showing")
wrapper.unmount();
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论