【发布时间】:2021-11-22 08:31:16
【问题描述】:
我正在尝试使用 onClick 属性调用模拟函数,并使用 React 测试库进行测试。测试是我正在努力改进的东西,但就我目前所拥有的了解而言。
我正在测试的是当单击按钮时调用一个函数,我正在渲染作为道具传递函数的组件(样式化组件)。
(它自己的函数是异步的,但是因为我只是在嘲笑按钮上正在调用一个函数,所以我只是使用 getBy)
测试文件
import { render, screen, fireEvent } from "@testing-library/react";
import QuoteButton from "../Components/QuoteButton";
test("fire event from QuoteButton component", () => {
const mockCollect = jest.fn();
render(<QuoteButton onClick={mockCollect}>get a quote</QuoteButton>);
const buttonElement = screen.getByRole("button", { name: /get a quote/i });
fireEvent.click(buttonElement);
expect(mockCollect).toHaveBeenCalledTimes(1);
});
组件
import styled from 'styled-components'
const StyledButton = styled.button`
cursor: pointer;
background: transparent;
font-size: 18px;
border-radius: 3px;
border-color: #f9a800;
&:hover {
background-color: #ff7800;
color: #fbfbf8
}
`
const QuoteButton = ({ children, collect }) => {
return <StyledButton data-testid="quoteButton" onClick={collect}>{children}</StyledButton>
}
export default QuoteButton
它正在接收 0 个呼叫,还有什么我应该寻找或测试的吗?任何帮助表示赞赏。我的理解是,因为我正在用 jest.fn() 模拟一个函数,所以必须有一些东西通过。
【问题讨论】:
标签: javascript reactjs testing jestjs react-testing-library