reactjs - 为什么在测试中没有调用模拟函数?
问题描述
我正在为一个组件编写测试。它有一个下载按钮。我想测试调用这个按钮的 onClick 函数。但它不起作用。我的测试有什么问题?
describe('download-button tests', () => {
let wrapper:any;
let _download = jest.fn(()=>{console.log('That`s Submit-button function')});
jest.mock('../components/CustomButtonComponent', ()=>
<button className="download" data-test ="download_button" type="submit" name="Скачать" onClick={_download}/>);
beforeAll(() => {
let wrapper = setupmount();
const nextState = {
...initialState,
selectedEntity: "1864296",
disableTable: false,
};
wrapper.setState(nextState);
console.log(wrapper.debug());
console.log(findByTestAttr(wrapper, 'download_button').first().debug());
findByTestAttr(wrapper, 'download_button').first().simulate('click');
});
test('download-button is clicked', () => {
expect(_download).toBeCalled();
});
});
结果如下console.log(findByTestAttr(wrapper, 'download_button').first().debug());
:
https://sun9-10.userapi.com/c850124/v850124774/1ddcf0/_A7I6vHPHeM.jpg
解决方案
我相信它是因为 onClick 侦听器附加到 的子级<CustomButton/>
,即<button/>
. 您是否尝试过将 data-test 道具传递给<button/>
组件?否则尝试类似findByTestAttr(wrapper, 'download_button').first().childAt(0).simulate('click')
.
推荐阅读
- javascript - 自定义 onChange 事件
- docker - 如何使用 CLion 在 Docker 容器中编码/运行程序?
- entity-framework-core - Entity Framework Core Insert 不遵守默认值
- reactjs - 创建可用于 Vue 和 React 应用程序的动态页眉和页脚的最佳方法是什么?
- elasticsearch - serilog 解构 - 混合类型
- python - 递归函数:用python递归
- python - Python - 向用户显示游戏保存文件的推荐方式
- google-cloud-dataflow - PAssert 与字符串不匹配
- python - Anaconda python 路径似乎没有更新
- workflow - 仅在不存在延期交货项目时转换项目履行的工作流程