我正在遵循以下指南https://developer.android.com/training/safetynet/attestation在我的应用程序中使用SafetyNet,并且我有与该模式相似的代码(在提供的链接中):
SafetyNet.getClient(this).attest(nonce, API_KEY)
.addOnSuccessListener(this) {
// ...
}
.addOnFailureListener(this) { e ->
// ...
}
}
一切正常,按预期我会成功或失败。
我的问题:有没有一种方法可以对代码进行单元测试,而无需在真正的SafetyNetClient上调用attest()
方法,而是在模拟环境下调用?我可以使用Mockito模拟SafetyNetClient
和SafetyNetApi.AttestationResponse
,但是我不知道如何模拟成功或失败事件。
答案 0 :(得分: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);
}