我是单元测试的新手,我在文档、文章和 YT 视频上花了大约 20-30 个小时,但仍然无法理解如何实现这一点。基本上我想在这里测试三件事:
- 确保这个组件渲染了 3 个组件
- 测试条件样式
- 测试点击事件
到目前为止,对于第一件事,如果我尝试这样做:
import { shallow } from "enzyme";
import React from "react";
import ButtonsComponent, { SchedButton } from "./ButtonsComponent";
it("renders three <MyButton /> components", () => {
const wrapper = shallow(<ButtonsComponent />);
expect(wrapper.find(MyButton)).to.have.lengthOf(3);
});
我收到以下错误:TypeError:Enzyme::Selector 需要字符串、对象或组件构造函数
我不知道如何测试其他两件事,我看过一些例子,但我不明白如何使它们适应我的特定情况,因为它们似乎并没有完全测试我我正在尝试做。
这是我的组件的简化版本:
import React from "react";
import styled from "styled-components";
const MyButton = styled.button`
background: ${props =>
props.color ? theme.palette.secondary.dark : "#e6e6e6"};
color: ${props => (props.color ? "white" : "#737373")};
`;
const ButtonsComponent = ({ currentState, updateState }) => {
const handleClick = event => {
updateState(event.target.value);
};
return (
<div>
<MyButton
value="Button 1"
onClick={handleClick}
color={currentState === "Button 1" ? "#1fbd45" : ""}
>
Button 1
</MyButton>
<MyButton
value="Button 2"
onClick={handleClick}
color={currentState === "Button 2" ? "#1fbd45" : ""}
>
Button 2
</MyButton>
<MyButton
value="Button 3"
onClick={handleClick}
color={!currentState || currentState === "Button 3" ? "#1fbd45" : ""}
>
Button 3
</MyButton>
</div>
);
};
export default ButtonsComponent;
非常感谢任何帮助,ELI5 解释会更多!