问题描述
单元测试 Google Places Autocompete API 是不可能的,因为不支持创建假响应。尝试使用 val placeResponse = Task<FindAutocompletePredictionsResponse>.
创建虚假响应,不幸的是响应创建是 API 内部的。有没有办法(或解决方法)来实现这一点?
@Test
fun search_testSuccess() {
// AutoComplete response
val placeResponse = Task<FindAutocompletePredictionsResponse>.
val searchConstraints = SearchPlaceConstraints("Fake place")
// AutoComplete request
val request = FindAutocompletePredictionsRequest.builder()
.setSessionToken(autocompleteSessionToken)
.setQuery(searchConstraints.queryText)
.build()
// return provided placesResponse if `PlacesClient.findAutocompletePredictions()` is called
coEvery { placesClient.findAutocompletePredictions(request) } returns placeResponse
// Result of method being tested
lateinit var result: Result<PlaceData<List<AutocompletePrediction>>>
coJustRun { result = googlePlaceSearchRemoteDataSource.search(searchConstraints)}
// Verify PlaceClient has been called
coVerify(exactly = 1) { placesClient.findAutocompletePredictions(request) }
// Assert success
assert(result is Result.Success)
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)