mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-03 09:35:11 +08:00
Move bridge dependencies into a single ReactTestFactory
Reviewed By: cjhopman Differential Revision: D2816291 fb-gh-sync-id: 0eb654541cac7816922d948cc38a26fab44fad70
This commit is contained in:
committed by
facebook-github-bot-6
parent
b9ceecb31f
commit
5e82094fcb
@@ -24,7 +24,7 @@ import com.facebook.infer.annotation.Assertions;
|
||||
import com.facebook.react.bridge.BaseJavaModule;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.CatalystInstanceImpl;
|
||||
import com.facebook.react.bridge.CatalystInstance;
|
||||
import com.facebook.react.bridge.LifecycleEventListener;
|
||||
import com.facebook.react.bridge.SoftAssertions;
|
||||
import com.facebook.react.bridge.UiThreadUtil;
|
||||
@@ -41,17 +41,16 @@ import com.facebook.react.modules.core.Timing;
|
||||
*
|
||||
* In order to write catalyst integration:
|
||||
* 1) Make {@link ReactIntegrationTestCase} a base class of your test case
|
||||
* 2) Use {@link ReactIntegrationTestCase.ReactTestInstanceBuilder}
|
||||
* 2) Use {@link ReactTestHelper#catalystInstanceBuilder()}
|
||||
* instead of {@link com.facebook.react.bridge.CatalystInstanceImpl.Builder} to build catalyst
|
||||
* instance for testing purposes
|
||||
*
|
||||
*/
|
||||
public abstract class ReactIntegrationTestCase extends AndroidTestCase {
|
||||
|
||||
private static final long SETUP_TIMEOUT_MS = 5000;
|
||||
private static final long IDLE_TIMEOUT_MS = 15000;
|
||||
|
||||
private @Nullable CatalystInstanceImpl mInstance;
|
||||
private @Nullable CatalystInstance mInstance;
|
||||
private @Nullable ReactBridgeIdleSignaler mBridgeIdleSignaler;
|
||||
private @Nullable ReactApplicationContext mReactContext;
|
||||
|
||||
@@ -143,31 +142,12 @@ public abstract class ReactIntegrationTestCase extends AndroidTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
public class ReactTestInstanceBuilder extends CatalystInstanceImpl.Builder {
|
||||
|
||||
@Override
|
||||
public CatalystInstanceImpl build() {
|
||||
// Call build in separate looper and wait for it to finish before returning
|
||||
final Event setupEvent = new Event();
|
||||
UiThreadUtil.runOnUiThread(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mInstance = ReactTestInstanceBuilder.super.build();
|
||||
mBridgeIdleSignaler = new ReactBridgeIdleSignaler();
|
||||
mInstance.addBridgeIdleDebugListener(mBridgeIdleSignaler);
|
||||
getContext().initializeWithInstance(mInstance);
|
||||
ApplicationHolder.setApplication((Application) getContext().getApplicationContext());
|
||||
setupEvent.occur();
|
||||
}
|
||||
});
|
||||
|
||||
if (!setupEvent.await(SETUP_TIMEOUT_MS)) {
|
||||
throw new RuntimeException(
|
||||
"Instance setup should take less than " + SETUP_TIMEOUT_MS + "ms");
|
||||
}
|
||||
return mInstance;
|
||||
}
|
||||
public void initializeWithInstance(CatalystInstance instance) {
|
||||
mInstance = instance;
|
||||
mBridgeIdleSignaler = new ReactBridgeIdleSignaler();
|
||||
mInstance.addBridgeIdleDebugListener(mBridgeIdleSignaler);
|
||||
getContext().initializeWithInstance(mInstance);
|
||||
ApplicationHolder.setApplication((Application) getContext().getApplicationContext());
|
||||
}
|
||||
|
||||
public boolean waitForBridgeIdle(long millis) {
|
||||
|
||||
Reference in New Issue
Block a user