我正在尝试模拟div中包含的元素的滚动,这是传递给render函数的元素。

我正在尝试类似这样的操作,但是随着我的下一个expect下降,div似乎没有滚动。

const content = (
      <div style={{display: 'flex'}}>
        <LazyList itemRenderer={itemRenderer} items={items} minItemHeight={MIN_ITEM_HEIGHT} />
      </div>
    );
mockOffsetSize(WIDTH, HEIGHT);

const {debug, container, queryByText} = render(content);
const scrollContainer = container.querySelector('.ReactVirtualized__Grid');
debug(scrollContainer);
fireEvent.scroll(scrollContainer, {y: 100});
debug(scrollContainer);

这是触发滚动事件的正确方法吗?还有其他选择吗?

最佳答案

您是否尝试过将EventListener添加到滚动容器中?我只是不确定您可能刚刚使用过的那个库,但是我很确定,在正常情况下,没有监听器的情况下调用scroll fireEvent不会执行任何操作。在fireEvent之前,插入以下内容:

scrollContainer.addEventListener('scroll', () => { /* some callback */ });

并将您的fireEvent更改为:
fireEvent.scroll(scrollContainer, { target: { scrollY: 100 } });

关于reactjs - 如何使用react-testing-library在容器内部的元素上触发fireEvent.scroll?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52665318/

10-13 07:55