我正在为呈现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()时调用回调函数。
答案 0 :(得分:0)
由于您不是自己测试组件FlatList
,所以我相信您最好以某种抽象的方式进行思考:不要像模拟滚动那样处理低级的事情,只需调用道具:
list.find(FlatList).prop('onEndReach')();
或使用simulate()
语法糖:
list.find(FlatList).simulate('endReach');
对我来说,这不仅比模拟滚动更容易,而且可维护性更好。