首页 > 解决方案 > Jest 和 Enzyme onClick 事件应该切换类 - 测试没有选择更新的包装器(??)

问题描述

我正在尝试测试一个包含树层次结构的组件。

树层次结构是用<ul/><li/>元素构建的。

我的树的最高级别没有隐藏,这意味着我可以li在第一个元素下方看到我的各个元素ul。但是,下一个嵌套ul元素有一个名为的类myHiddenClass,其中隐藏了该元素。当我单击li它上面的元素时,它会myHiddenClassul元素上切换。

因此,树层次结构看起来像这样:

<ul>
    <li onClick={(e) => unHideUl(e)}></li>
    <ul className='myHiddenClass'>
        <li></li>
        ...
    </ul>
</ul>

该函数unHideUl如下所示:

const unHideUl = (e) => {
    e.stopPropagation()
    e.target.nextSibling.classList.toggle('myHiddenClass')
}

我已经测试了这个onClick事件,它应该会触发。显然,我还通过常规编译测试了这个功能,它完美无缺。

我的测试如下所示:

let wrapper

beforeEach(() => {
    wrapper = mount(<MyComponent/>)
});

afterEach(() => {
    wrapper.unmount();
})

test('Expect to be expanded', () => {
    const item = wrapper.find('li').first()
    item.simulate('click')
    const uList = wrapper.find('ul').first().children().find('ul').first()
    expect(uList.hasClass('myHiddenClass')).toBeFalsy()
})

console.log(wrapper.debug())之后我尝试过像这样打印包装纸simulate('click),但在这里,我ul的没有一个被myHiddenClass删除。

显然,如果我能了解我在这里做错了什么,我将不胜感激 - 出于某种原因,我不禁想到我的包装器在unHideUl切换课程后可能不会更新。

标签: javascriptreactjsjestjsenzyme

解决方案


推荐阅读