用玩笑和酶模拟FlatList动作

时间:2019-08-11 16:14:31

标签: reactjs react-native jestjs enzyme

我正在为呈现FlatList的组件编写一些单元测试,我需要模拟一些操作,例如scrollTo和scrollToEnd。

任何人都知道我该怎么做到吗?

我正在使用Jest和酶进行测试。

import React form "react";
import { FlatList } from 'react-native';
import { mount } from 'enzyme';

describe("<FlatList/>", () => {
  const callback = jest.fn();

  it("how to simulate scroll?", () => {
    const list = mount(<FlatList onEndReach={callback}/>);

    //how to simulate scrool and reach the end of the list?

    expect(callback).toHaveBeenCalled();
  })
})

从已安装对象的实例调用scrollToEnd()无效。

const flatList = wrapper.find(FlatList);
flatList.first().instance().scrollToEnd();
Expected mock function to have been called, but it was not called.

在模拟中,我想在调用Flatlist.scrollToEnd()时调用回调函数。

1 个答案:

答案 0 :(得分:0)

由于您不是自己测试组件FlatList,所以我相信您最好以某种抽象的方式进行思考:不要像模拟滚动那样处理低级的事情,只需调用道具:

list.find(FlatList).prop('onEndReach')();

或使用simulate()语法糖:

list.find(FlatList).simulate('endReach');

对我来说,这不仅比模拟滚动更容易,而且可维护性更好。