import { mount } from 'enzyme'; import React from 'react'; import { usePrevious } from './usePrevious.hook'; const TestComponent = ({ value, valueCallback }: { value: any; valueCallback: (value: any) => any }) => { const previousValue = usePrevious(value); valueCallback(previousValue); return null as JSX.Element; }; describe('usePrevious', () => { it('should give back undefined on initial mount', () => { let valueFromHook: any; const valueCallback = (value: any) => (valueFromHook = value); mount(); expect(valueFromHook).toBe(undefined); }); it('should give back the value before the most recent render', () => { let valueFromHook: any; const valueCallback = (value: any) => (valueFromHook = value); const component = mount(); component.setProps({ value: 'second value' }); expect(valueFromHook).toBe('first value'); component.setProps({ value: 'third value' }); expect(valueFromHook).toBe('second value'); }); });