这是我的考验
it('should run', async () => {
const { container } = renderWithContainers(<Wrapper />)
window.innerHeight = 50
await wait(() => fireEvent(window, new Event('resize')))
expect(getByTestId(container, 'myComponent')).toHaveStyle(`position: relative`)
})
这失败了,因为原始位置是fixed
,并且在调整大小事件触发之前我显然使用了container
定义了...那么我如何才能将其“渲染”以使用更新的容器?
在我的代码中,一旦重新渲染,它就会处于不同的位置(只是不在测试中)
我已经做到了:
const { container, rerender } = renderWithContainers(<Wrapper />)
window.innerHeight = 50
await wait(() => fireEvent(window, new Event('resize')))
rerender(<Wrapper />
但是这与invariant Violation: Could not find "store" react testing library
中断了,但是我已经将所有存储/提供程序逻辑包装在renderWithContainers
中,那么我该如何重用?
我想做这样的事情:rerender(renderWithContainers(<Wrapper />))
,但显然行不通
非常清楚,我想在事件监听器启动后重新渲染组件,以便可以看到更新的组件