首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用react-testing-library测试react列表项移动

如何使用react-testing-library测试react列表项移动
EN

Stack Overflow用户
提问于 2020-07-23 14:58:28
回答 1查看 1.4K关注 0票数 4

试着测试一个简单的组件,它呈现一个字符串列表,当单击时,每个项目都会移动到顶部。

代码语言:javascript
复制
const Component = p => {
  const [data, setData] = React.useState(p.data)
  const moveToTop = from => {
    const nextData = [...data]
    const target = nextData.splice(from, 1)[0]
    nextData.unshift(target)
    setData(nextData)
  }
  console.log(data, 'data')
  return (
    <ul>
      {data.map((d, i) => (
        <li
          aria-label="li"
          key={d}
          onClick={() => {
            moveToTop(i)
          }}
        >
          {d}
        </li>
      ))}
    </ul>
  )
}

// ... test ...

test('move element', async () => {
  render(<Component data={['a', 'b', 'c']} />)
  const liArr = screen.getAllByLabelText('li')
  expect(liArr.length).toBe(3)
  expect(liArr[0].textContent).toBe('a')
  fireEvent.click(liArr[2])
  expect(liArr[0].textContent).toBe('c')
})

codesandbox中,日志显示clickEvent设置数据成功,但上次断言失败。我知道react re-render很耗时,但我也注意到@testing-library/react为其render api包装了act。在搜索github问题和堆栈溢出之后,我仍然被困在这个测试用例中。

需要您的帮助,任何文档和样本都会有意义,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-26 03:31:20

li顺序更改了,但您没有在新结构上断言。在单击事件之后执行另一个screen.getAllByLabelText('li')并对其进行断言。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63048586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档