我需要测试触发点击事件时发生的组件中的道具更改。
我希望以下代码可以工作:
it('should change active <ListItem /> when its clicked', () => {
const itemNumber = 2;
const itemComponent = wrapper.find(ListItem).at(itemNumber);
itemComponent.dive().simulate('click');
expect(itemComponent.props().isActive).to.equal(true);
});
事实并非如此。
但是在控制台中调试了整个包装器后,我发现该道具实际上正在更新。
因此,我假设酶未更新“选定的节点”(itemComponent
),并且在单击发生后尝试再次选择它:
it('should change active <CustomListItem /> when clicked', () => {
const itemNumber = 2;
let itemComponent = wrapper.find(CustomListItem).at(itemNumber);
itemComponent.dive().simulate('click');
// added line
itemComponent = wrapper.find(CustomListItem).at(itemNumber);
expect(itemComponent.props().isActive).to.equal(true);
});
它有效!
但是我不确定为什么。有人可以给我一些提示吗?