我正在使用Jest和酶来测试我的反应成分。测试之一如下所示:

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,那么为什么在下一条语句中找不到该节点?

可能要注意,DropDown呈现SelectWrapper,而后者又呈现SelectButton。但这不应该与我使用mount有所区别吗?

最佳答案

wrapper.find(SelectButton).at(1)


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

10-02 13:58