import React from 'react'; import { mount } from 'enzyme'; import Affix from '..'; import Button from '../../button'; jest.useFakeTimers(); const events = {}; class AffixMounter extends React.Component { componentDidMount() { this.container.scrollTop = 100; this.container.addEventListener = jest.fn().mockImplementation((event, cb) => { events[event] = cb; }); } getTarget = () => { return this.container; } render() { return (
{ this.container = node; }} >
this.container} ref={ele => this.affix = ele} >
); } } describe('Affix Render', () => { it('Anchor render perfectly', () => { document.body.innerHTML = '
'; const wrapper = mount(, { attachTo: document.getElementById('mounter') }); jest.runAllTimers(); wrapper.instance().affix.fixedNode.parentNode.getBoundingClientRect = jest.fn(() => { return { bottom: 100, height: 28, left: 0, right: 0, top: -50, width: 195, }; }); events.scroll({ type: 'scroll', }); jest.runAllTimers(); expect(wrapper.instance().affix.state.affixStyle).not.toBe(null); }); });