Skip to content

Commit 5b0d86b

Browse files
committed
test: Add current behavior for reducers
1 parent 79740da commit 5b0d86b

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

packages/react-reconciler/src/__tests__/ReactHooksWithNoopRenderer-test.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3802,4 +3802,49 @@ describe('ReactHooksWithNoopRenderer', () => {
38023802

38033803
expect(Scheduler).toHaveYielded(['Render: 0']);
38043804
});
3805+
3806+
it('reducer-closure', () => {
3807+
let setLimit;
3808+
let increment;
3809+
function Test() {
3810+
const [limit, _setLimit] = useState(5);
3811+
const [count, _increment] = useReducer((state, action) => {
3812+
return state < limit ? state + 1 : state;
3813+
}, 1);
3814+
setLimit = _setLimit;
3815+
increment = _increment;
3816+
3817+
return <Text text={`Render: ${count}`} />;
3818+
}
3819+
3820+
ReactNoop.act(() => {
3821+
ReactNoop.render(<Test />);
3822+
});
3823+
3824+
expect(Scheduler).toHaveYielded(['Render: 1']);
3825+
3826+
ReactNoop.act(() => {
3827+
increment();
3828+
increment();
3829+
increment();
3830+
increment();
3831+
});
3832+
3833+
expect(Scheduler).toHaveYielded(['Render: 5']);
3834+
3835+
ReactNoop.act(() => {
3836+
increment();
3837+
});
3838+
ReactNoop.act(() => {
3839+
increment();
3840+
});
3841+
3842+
expect(Scheduler).toHaveYielded([]);
3843+
3844+
ReactNoop.act(() => {
3845+
setLimit(10);
3846+
});
3847+
3848+
expect(Scheduler).toHaveYielded(['Render: 5']);
3849+
});
38053850
});

0 commit comments

Comments
 (0)