小编Alb*_*ing的帖子

使用react-testing-library测试react-window列表中的滚动

我被困在这里进行一个测试,我想验证在滚动浏览由react-window导入的列表组件后,正在渲染不同的项目。该列表位于一个表格组件内,该组件保存了 React 上下文中的滚动位置,这就是我需要测试整个表格组件的原因。

不幸的是,滚动事件似乎没有效果,列表仍然显示相同的项目。

测试看起来像这样:

render(
  <SomeProvider>
    <Table />
  </SomeProvider>
)

describe('Table', () => {
  it('scrolls and renders different items', () => {
    const table = screen.getByTestId('table')

    expect(table.textContent?.includes('item_A')).toBeTruthy() // --> true
    expect(table.textContent?.includes('item_Z')).toBeFalsy() // --> true

    // getting the list which is a child component of table
    const list = table.children[0]

    fireEvent.scroll(list, {target: {scrollY: 100}})

    expect(table.textContent?.includes('item_A')).toBeFalsy() // --> false
    expect(table.textContent?.includes('item_Z')).toBeTruthy() // --> false
  })
})
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激。

reactjs react-testing-library react-window

12
推荐指数
1
解决办法
6913
查看次数

Intl.DateTimeFormat() 中 timeZone 选项到底有什么作用

我很难理解timeZone该方法中的选项Intl.DateTimeFormat()到底是做什么的。我还找不到这方面的深入资源。任何解释将不胜感激。

背景:我们需要在前端显示后端服务器的时间戳,并且时区偏移存在一些问题。目前,我认为根据本地客户端时间显示正确时间的解决方案如下:

Intl.DateTimeFormat('en-GB', {
          hour: 'numeric',
          minute: 'numeric',
          second: 'numeric',
          timeZone: 'GMT'
        }).format(timestamp)}
Run Code Online (Sandbox Code Playgroud)

我不完全理解,为什么我需要传递选项 timeZone: 'GMT' 作为“格林威治标准时间”才能在前端获得正确的时间。

javascript timezone timestamp utc gmt

11
推荐指数
1
解决办法
2万
查看次数

将 Cypress 与机器人测试框架集成?

我需要为我们的 React Web 应用程序评估最合适的端到端测试库。一项要求是将这个 e2e 库与我们团队目前用于测试的机器人框架集成。

有谁知道是否以及如何将 Cypress 作为 e2e 库与机器人框架集成?

更新:可能的情况是:通过一个简单的一行命令,我们希望执行所有机器人测试并将它们聚合在一个结果文件中。如果有一种方法可以在机器人文件中编写 Cypress e2e 测试,就像使用 Selenium 一样,或者至少触发 cypress JS 测试文件并检索其结果,并以某种方式将它们与其他机器人的结果合并,那就太好了测试

更新 2:我们改用新的机器人库“浏览器”,它就像 Robot Selenium,在各方面都更好。Browser 在底层使用了浏览器自动化工具 Playwright,它是 Puppeteer 的精神继承者。使用浏览器会带来很多乐趣,它的 API 非常直观、通用且强大。所以目前我们完全放弃了将 Robot 与 Cypress 集成的想法。浏览器做得非常出色。

robotframework cypress

5
推荐指数
0
解决办法
4777
查看次数