【发布时间】:2019-09-25 05:25:03
【问题描述】:
我正在尝试在这里创建简单的复习组件
Refresher.js
import { useEffect } from 'react';
const Refresher = ({ onRefresh }) => {
useEffect(() => {
const id = setInterval(onRefresh, 60000);
return () => {
clearInterval(id);
};
}, [onRefresh]);
return null;
};
export default Refresher;
但是,当我尝试使用 jest.useFakeTimers() 对其进行测试时,不知何故它不起作用。即使在jest.runOnlyPendingTimers() 之后也不会调用存根
import React from 'react';
import renderer from 'react-test-renderer';
import Refresher from '../Refresher';
describe('Refresher', () => {
test('should refresh the result every 60 seconds', () => {
jest.useFakeTimers();
const onRefreshSpy = jest.fn();
const refresher = renderer.create(<Refresher onRefresh={onRefreshSpy} />);
expect(onRefreshSpy).not.toHaveBeenCalled();
jest.runOnlyPendingTimers();
refresher.update(); // Trying force update here
expect(onRefreshSpy).toHaveBeenCalled();
});
});
如果没记错的话,如果组件没有更新,间隔将不会运行,所以我尝试使用refresher.update(),但似乎它并没有真正起作用。
有人知道如何在这里修复测试吗?
【问题讨论】:
标签: javascript react-native jestjs