diff --git a/packages/react-native/Libraries/Components/ScrollView/__tests__/ScrollView-test.js b/packages/react-native/Libraries/Components/ScrollView/__tests__/ScrollView-test.js
index 6083f7c1547..1b9a1da8fdf 100644
--- a/packages/react-native/Libraries/Components/ScrollView/__tests__/ScrollView-test.js
+++ b/packages/react-native/Libraries/Components/ScrollView/__tests__/ScrollView-test.js
@@ -11,12 +11,12 @@
'use strict';
+const {create, unmount, update} = require('../../../../jest/renderer');
const Text = require('../../../Text/Text');
const ReactNativeTestTools = require('../../../Utilities/ReactNativeTestTools');
const View = require('../../View/View');
const ScrollView = require('../ScrollView');
const React = require('react');
-const ReactTestRenderer = require('react-test-renderer');
describe('ScrollView', () => {
beforeEach(() => {
@@ -39,22 +39,22 @@ describe('ScrollView', () => {
);
});
- it('mocks native methods and instance methods', () => {
+ it('mocks native methods and instance methods', async () => {
jest.mock('../ScrollView');
const ref = React.createRef();
- ReactTestRenderer.create();
+ await create();
expect(ref.current?.measure).toBeInstanceOf(jest.fn().constructor);
expect(ref.current?.scrollTo).toBeInstanceOf(jest.fn().constructor);
});
describe('ref', () => {
- it('receives an instance or null', () => {
+ it('receives an instance or null', async () => {
jest.dontMock('../ScrollView');
const scrollViewRef = jest.fn();
- const testRendererInstance = ReactTestRenderer.create(
+ const testRendererInstance = await create(
,
);
@@ -62,16 +62,16 @@ describe('ScrollView', () => {
expect.objectContaining({_nativeTag: expect.any(Number)}),
);
- testRendererInstance.unmount();
+ await unmount(testRendererInstance);
expect(scrollViewRef).toHaveBeenLastCalledWith(null);
});
- it('transitions between refs', () => {
+ it('transitions between refs', async () => {
jest.dontMock('../ScrollView');
const scrollViewRefA = jest.fn();
- const testRendererInstance = ReactTestRenderer.create(
+ const testRendererInstance = await create(
,
);
@@ -80,7 +80,7 @@ describe('ScrollView', () => {
);
const scrollViewRefB = jest.fn();
- testRendererInstance.update();
+ await update(testRendererInstance, );
expect(scrollViewRefA).toHaveBeenLastCalledWith(null);
expect(scrollViewRefB).toHaveBeenLastCalledWith(
@@ -90,11 +90,11 @@ describe('ScrollView', () => {
});
describe('innerViewRef', () => {
- it('receives an instance or null', () => {
+ it('receives an instance or null', async () => {
jest.dontMock('../ScrollView');
const innerViewRef = jest.fn();
- const testRendererInstance = ReactTestRenderer.create(
+ const testRendererInstance = await create(
,
);
@@ -102,16 +102,16 @@ describe('ScrollView', () => {
expect.objectContaining({_nativeTag: expect.any(Number)}),
);
- testRendererInstance.unmount();
+ await unmount(testRendererInstance);
expect(innerViewRef).toHaveBeenLastCalledWith(null);
});
- it('transitions between refs', () => {
+ it('transitions between refs', async () => {
jest.dontMock('../ScrollView');
const innerViewRefA = jest.fn();
- const testRendererInstance = ReactTestRenderer.create(
+ const testRendererInstance = await create(
,
);
@@ -120,7 +120,11 @@ describe('ScrollView', () => {
);
const innerViewRefB = jest.fn();
- testRendererInstance.update();
+
+ await update(
+ testRendererInstance,
+ ,
+ );
expect(innerViewRefA).toHaveBeenLastCalledWith(null);
expect(innerViewRefB).toHaveBeenLastCalledWith(
@@ -130,11 +134,11 @@ describe('ScrollView', () => {
});
describe('getInnerViewRef', () => {
- it('returns an instance', () => {
+ it('returns an instance', async () => {
jest.dontMock('../ScrollView');
const scrollViewRef = React.createRef(null);
- ReactTestRenderer.create();
+ await create();
const innerViewRef = scrollViewRef.current.getInnerViewRef();
// This is checking if the ref acts like a host component. If we had an
diff --git a/packages/react-native/jest/renderer.js b/packages/react-native/jest/renderer.js
index 97bc909290e..db97a3dd089 100644
--- a/packages/react-native/jest/renderer.js
+++ b/packages/react-native/jest/renderer.js
@@ -24,3 +24,18 @@ export async function create(
});
return nullthrows(component);
}
+
+export async function unmount(testRenderer: ReactTestRenderer) {
+ await TestRenderer.act(async () => {
+ testRenderer.unmount();
+ });
+}
+
+export async function update(
+ testRenderer: ReactTestRenderer,
+ element: React.Element,
+) {
+ await TestRenderer.act(async () => {
+ testRenderer.update(element);
+ });
+}