道具更改时,酶是否不更新选定的节点?

时间:2019-07-25 12:52:47

标签: javascript reactjs unit-testing testing enzyme

我需要测试触发点击事件时发生的组件中的道具更改。

我希望以下代码可以工作:

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);
});

它有效!

但是我不确定为什么。有人可以给我一些提示吗?

0 个答案:

没有答案