【发布时间】:2020-09-29 13:54:51
【问题描述】:
我正在尝试使用作为道具传递给子组件的参数来测试一个函数。我想在它上面模拟一个“点击”事件。我不确定我是否以正确的方式做这件事。 PS我没有收到任何错误。这是我下面的组件。
function MovieSummary({movie,addItem}) {
return (
<div key={movie.imdbID} className="movie-container">
<div className="button-container">
<button
id="btn-click"
key={movie.imdbID}
disabled={disabled.indexOf(movie.imdbID) !== -1 || disableButton}
className="btn btn-primary mt-3"
onClick={() => {
addItem({
title: movie.Title,
id: movie.imdbID,
year: movie.Year,
});
handleDisabled(movie.imdbID);
}}
>
Nominate
</button>
</div>
</div>
);
}
export default MovieSummary;
下面是我的测试组件
it("simulate add movies onclick", () => {
const movie = {
imdbID: 2,
Title: "bola",
Year: 1992,
Poster: "https://media1.giphy.com/media/rwzBCbqt1jqMw/1",
};
const disabled = [2];
const mockFn = jest.fn();
const wrapper = shallow(
<MovieSummary
movie={movie}
disabled={disabled}
addItem={mockFn}
handleDisabled={() => {}}
/>
);
wrapper.find("[id='btn-click']").simulate("click");
expect(mockFn).toHaveBeenCalled();
});
【问题讨论】: