diff --git a/scripts/__tests__/ComponentTest/ForwardRef.test.js b/scripts/__tests__/ComponentTest/ForwardRef.test.js new file mode 100644 index 00000000..993d800a --- /dev/null +++ b/scripts/__tests__/ComponentTest/ForwardRef.test.js @@ -0,0 +1,45 @@ +import * as Horizon from '@cloudsop/horizon/index.ts'; +import { getLogUtils } from '../jest/testUtils'; + +describe('ForwardRef', () => { + const LogUtils = getLogUtils(); + it('ForwardRef包裹的函数组件应该正常触发effect', () => { + function App(props, ref) { + Horizon.useEffect(() => { + LogUtils.log('effect'); + return () => { + LogUtils.log('effect remove'); + }; + }); + return ; + } + + const Wrapper = Horizon.forwardRef(App); + + Horizon.act(() => { + Horizon.render(, container); + }); + expect(LogUtils.getAndClear()).toEqual(['effect']); + Horizon.act(() => { + Horizon.render(, container); + }); + expect(LogUtils.getAndClear()).toEqual(['effect remove', 'effect']); + }); + + it('memo组件包裹的类组件', () => { + class Component extends Horizon.Component { + render() { + return ; + } + } + + const Wrapper = Horizon.memo(Component); + + Horizon.act(() => { + Horizon.render(, container); + }); + Horizon.act(() => { + Horizon.render(, container); + }); + }); +});