首页 > 解决方案 > 如何模拟 FirebaseInstanceId.getInstance()

问题描述

如何模拟 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

标签: androidunit-testingmockito

解决方案


你应该打电话

FirebaseApp.initializeApp(RuntimeEnvironment.application)

在您的测试用例中,如果您使用 Robolectric 或以其他方式通过相关Application


推荐阅读