0

我在我的应用程序中使用 SafetyNet,遵循本指南:https ://developer.android.com/training/safetynet/attestation ,并且我有类似于此模式的代码(在提供的链接中):

SafetyNet.getClient(this).attest(nonce, API_KEY)
    .addOnSuccessListener(this) {
        // ...
    }
    .addOnFailureListener(this) { e ->
        // ...
    }
}

一切正常,我按预期获得成功或失败。

我的问题:有没有一种方法可以对这段代码进行单元测试,而无需在真正的 SafetyNetClient 上调用attest()方法,而是在模拟上?我可以模拟SafetyNetClientSafetyNetApi.AttestationResponse使用 Mockito,但我不知道如何模拟成功或失败事件。

4

1 回答 1

0
 @Mock private SafetyNetClient safetyNetClientMock;
 @Mock Context contextMock;
 @Mock Task SafetyNetApi.AttestationResponse task;

 @Before
  public void setUp() {
    when(SafetyNet.getClient(contextMock)).thenReturn(safetyNetClientMock);
    when(safetyNetClientMock.attest(any(byte[].class), anyString())).thenReturn(task);
    when(task.addOnSuccessListener(any())).thenReturn(task);
    when(task.addOnFailureListener(any())).thenReturn(task);
 }
于 2019-10-10T00:12:35.760 回答