我正在尝试测试Permission.REVEAL_NOW返回方法isFeatureRevealNowAvailable。 这是我已经尝试过但未成功的一些代码。任何帮助将一如既往地受到赞赏!
要测试的功能:
class PermissionRepository(private val permissionApi: PermissionApi,private val appPreferences: AppPreferences) {
fun checkPermission(permission: PermissionType,onPermissionResponse: (Boolean) -> Unit) {
Log.i("Permission","Checking permission")
when (permission) {
PermissionType.REVEAL_NOW -> {
isFeatureRevealNowAvailable(onPermissionResponse,::errorHandler)
}
}
}
尝试的解决方案:
@RunWith(MockitoJUnitRunner::class)
class PermissionRepositoryTest{
@Test
fun checkPermissionTest() {
val mockPermissionRepository = mock(PermissionRepository::class.java)
val mockPermissionApi = mock(PermissionApi::class.java)
val result = mockPermissionRepository.checkPermission(PermissionType.REVEAL_NOW,onPermissionResponse = null)
//Unsure of what to use here AssertThat or Mockito's "when" function
}
}
private fun isFeatureRevealNowAvailable(permissionResponseHandler: (Boolean) -> Unit,permissionError: (Throwable) -> Unit) {
permissionApi.getRevealNowPermission().enqueue(object : Callback<PermissionResponse> {
override fun onFailure(call: Call<PermissionResponse>,t: Throwable) {
permissionResponseHandler(false)
permissionError(t)
}
override fun onResponse(call: Call<PermissionResponse>,response: Response<PermissionResponse>) {
val permissionResult = response.body()?.isRevealNow ?: false
updateUserLocalPermission(PermissionType.REVEAL_NOW,permissionResult)
permissionResponseHandler(permissionResult)
}
})
}