首页 > 解决方案 > 酶模拟返回零节点

问题描述

我正在使用 Jest 和 Enzyme 来测试我的反应组件。其中一项测试如下所示:

import DropDown from './DropdDown';
import SelectButton from './SelectButton';
import { mount } from "enzyme";

describe('Test Dropdown component', () => {

    it('Check if handleSubmit is called on click', () => {
        const wrapper = mount(
            <DropDown
                data={dropdDownData}
            />);

        expect(wrapper.contains(SelectButton)).toBe(true); // passes
        wrapper.find(SelectButton).at(0).simulate('click');
    })

})

运行上述测试时出现以下错误:

Method “simulate” is meant to be run on 1 node. 0 found instead.

如果SelectButton存在于wrapper,那么为什么在下一条语句中找不到节点?

可能需要注意的是DropDownrenders SelectWrapper,它又会渲染SelectButton. 但这在我使用时不应该有所作为mount

标签: javascriptreactjsjestjsenzyme

解决方案


wrapper.find(SelectButton).at(1)

是一个从零开始的集合,如果集合包含零个或一个元素,.at(1)将返回一个空包装器。.at(0)应该可以工作。


推荐阅读