如何模拟FirebaseInstanceId.getInstance()

时间:2018-06-27 09:09:53

标签: android unit-testing mockito

如何模拟FirebaseInstanceId? 我只想在调用该方法时

FirebaseInstanceId.getInstance().getToken()

它应该返回一个空字符串。

我也尝试过使用PowerMockRunner。

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(JUnit4.class)
@PrepareForTest({ FirebaseInstanceId.class})
public class NotificationServiceTest {

当我执行以下操作时:

FirebaseInstanceId firebaseInstanceId = mock(FirebaseInstanceId.class);
    Mockito.when(firebaseInstanceId.getInstance()).thenReturn(firebaseInstanceId);

我收到以下错误: java.lang.RuntimeException:android.os.Process中的方法myPid未被模拟。有关详细信息,请参见http://g.co/androidstudio/not-mocked

1 个答案:

答案 0 :(得分:0)

您应该致电

FirebaseApp.initializeApp(RuntimeEnvironment.application)

在测试用例中,如果您使用的是Robolectric或通过相关的Application