Skip to content

Commit c3732e6

Browse files
authored
📝 handle unit testing with reflection (#376)
1 parent b698ba2 commit c3732e6

File tree

2 files changed

+9
-41
lines changed

2 files changed

+9
-41
lines changed

CHANGELOG.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,3 @@
8888
* Added new OnReportSubmitHandler API
8989
* Fixed linking script
9090
* Api Name Changes
91-

android/src/test/java/com/instabug/reactlibrary/RNInstabugReactnativeModuleTest.java

Lines changed: 9 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,30 @@
22

33
import android.os.Handler;
44
import android.os.Looper;
5-
6-
import com.facebook.react.bridge.Arguments;
7-
import com.facebook.react.bridge.JavaOnlyArray;
8-
import com.facebook.react.bridge.JavaOnlyMap;
9-
import com.facebook.react.bridge.WritableMap;
10-
import com.instabug.bug.BugReporting;
11-
125
import android.os.SystemClock;
136
import android.util.Log;
147

8+
import com.facebook.react.bridge.Arguments;
159
import com.facebook.react.bridge.Callback;
16-
import com.facebook.react.bridge.ReadableArray;
10+
import com.facebook.react.bridge.JavaOnlyArray;
11+
import com.facebook.react.bridge.JavaOnlyMap;
1712
import com.facebook.react.bridge.WritableArray;
13+
import com.facebook.react.bridge.WritableMap;
1814
import com.facebook.react.bridge.WritableNativeArray;
15+
import com.instabug.bug.BugReporting;
1916
import com.instabug.chat.Chats;
2017
import com.instabug.chat.Replies;
2118
import com.instabug.crash.CrashReporting;
22-
import com.instabug.featuresrequest.ActionType;
2319
import com.instabug.featuresrequest.FeatureRequests;
2420
import com.instabug.library.Feature;
2521
import com.instabug.library.Instabug;
2622
import com.instabug.library.InstabugColorTheme;
2723
import com.instabug.library.InstabugCustomTextPlaceHolder;
2824
import com.instabug.library.InstabugState;
29-
30-
import com.instabug.library.model.Report;
3125
import com.instabug.library.ui.onboarding.WelcomeMessage;
3226
import com.instabug.library.visualusersteps.State;
33-
import com.instabug.survey.OnDismissCallback;
34-
import com.instabug.survey.OnShowCallback;
3527
import com.instabug.survey.Surveys;
3628

37-
import org.json.JSONArray;
3829
import org.json.JSONObject;
3930
import org.junit.Assert;
4031
import org.junit.Before;
@@ -49,22 +40,18 @@
4940
import org.powermock.modules.junit4.PowerMockRunner;
5041
import org.powermock.reflect.Whitebox;
5142

52-
import java.lang.reflect.Method;
5343
import java.util.ArrayList;
5444
import java.util.HashMap;
5545
import java.util.Locale;
5646
import java.util.Map;
5747
import java.util.concurrent.Executors;
5848
import java.util.concurrent.ScheduledExecutorService;
5949

60-
import static com.instabug.reactlibrary.utils.InstabugUtil.getMethod;
6150
import static org.mockito.Matchers.any;
6251
import static org.mockito.Matchers.anyLong;
63-
import static org.mockito.Matchers.eq;
6452
import static org.mockito.Mockito.verify;
6553
import static org.powermock.api.mockito.PowerMockito.doAnswer;
6654
import static org.powermock.api.mockito.PowerMockito.mock;
67-
import static org.powermock.api.mockito.PowerMockito.verifyPrivate;
6855
import static org.powermock.api.mockito.PowerMockito.when;
6956

7057
@RunWith(PowerMockRunner.class)
@@ -120,9 +107,8 @@ public Boolean answer(InvocationOnMock invocation) throws Throwable {
120107
}
121108

122109
@Test
123-
public void givenString$sendHandledJSCrash_whenQuery_thenShouldCallNativeApiWithArgs() {
110+
public void givenString$sendHandledJSCrash_whenQuery_thenShouldCallNativeApiWithArgs() throws Exception {
124111

125-
try {
126112
JSONObject json = mock(JSONObject.class);
127113
PowerMockito.whenNew(JSONObject.class).withArguments("exception").thenReturn(json);
128114

@@ -131,22 +117,13 @@ public Boolean answer(InvocationOnMock invocation) throws Throwable {
131117
// when
132118
rnModule.sendHandledJSCrash("exception");
133119
// then
134-
PowerMockito.verifyStatic(VerificationModeFactory.times(1));
135120
JSONObject jsonObject = new JSONObject("exception");
136-
Method method = getMethod(Class.forName("com.instabug.crash.CrashReporting"), "reportException", JSONObject.class, boolean.class, Report.class);
137-
if (method != null) {
138-
method.invoke(null, jsonObject, true, null);
139-
}
140-
} catch (Exception e) {
141-
e.printStackTrace();
142-
e.getCause();
143-
}
121+
PowerMockito.verifyPrivate(CrashReporting.class, VerificationModeFactory.times(1)).invoke("reportException", jsonObject, true);
144122
}
145123

146124
@Test
147-
public void givenString$sendJSCrash_whenQuery_thenShouldCallNativeApiWithArgs() {
125+
public void givenString$sendJSCrash_whenQuery_thenShouldCallNativeApiWithArgs() throws Exception {
148126

149-
try {
150127
JSONObject json = mock(JSONObject.class);
151128
PowerMockito.whenNew(JSONObject.class).withArguments("exception").thenReturn(json);
152129

@@ -155,16 +132,8 @@ public Boolean answer(InvocationOnMock invocation) throws Throwable {
155132
// when
156133
rnModule.sendJSCrash("exception");
157134
// then
158-
PowerMockito.verifyStatic(VerificationModeFactory.times(1));
159135
JSONObject jsonObject = new JSONObject("exception");
160-
Method method = getMethod(Class.forName("com.instabug.crash.CrashReporting"), "reportException", JSONObject.class, boolean.class, Report.class);
161-
if (method != null) {
162-
method.invoke(null, jsonObject, false, null);
163-
}
164-
} catch (Exception e) {
165-
e.printStackTrace();
166-
e.getCause();
167-
}
136+
PowerMockito.verifyPrivate(CrashReporting.class, VerificationModeFactory.times(1)).invoke("reportException", jsonObject, false);
168137
}
169138

170139
/********Instabug*********/

0 commit comments

Comments
 (0)