gpt4 book ai didi

java - 单元测试,自定义调用类改造2请求: Reponse has private access

转载 作者:行者123 更新时间:2023-12-01 09:35:14 25 4
gpt4 key购买 nike

当我创建自定义调用类时,我无法返回响应,因为响应类是最终的。有什么解决办法吗?

public class TestCall implements Call<PlacesResults> {

String fileType;
String getPlacesJson = "getplaces.json";
String getPlacesUpdatedJson = "getplaces_updated.json";

public TestCall(String fileType) {
this.fileType = fileType;
}

@Override
public Response execute() throws IOException {
String responseString;
InputStream is;
if (fileType.equals(getPlacesJson)) {
is = InstrumentationRegistry.getContext().getAssets().open(getPlacesJson);
} else {
is = InstrumentationRegistry.getContext().getAssets().open(getPlacesUpdatedJson);
}

PlacesResults placesResults= new Gson().fromJson(new InputStreamReader(is), PlacesResults.class);
//CAN"T DO IT
return new Response<PlacesResults>(null, placesResults, null);
}

@Override
public void enqueue(Callback callback) {

}

//default methods here
//....
}

在我的单元测试类中,我想像这样使用它:

Mockito.when(mockApi.getNearbyPlaces(eq("testkey"), Matchers.anyString(), Matchers.anyInt())).thenReturn(new TestCall("getplaces.json"));
GetPlacesAction action = new GetPlacesAction(getContext().getContentResolver(), mockEventBus, mockApi, "testkey");
action.downloadPlaces();

我的 downloadPlaces() 方法如下所示:

public void downloadPlaces() {
Call<PlacesResults> call = api.getNearbyPlaces(webApiKey, LocationLocator.getInstance().getLastLocation(), 500);

PlacesResults jsonResponse = null;
try {
Response<PlacesResults> response = call.execute();
Timber.d("response " + response);
jsonResponse = response.body();
if (jsonResponse == null) {
throw new IllegalStateException("Response is null");
}
} catch (UnknownHostException e) {
events.sendError(EventBus.ERROR_NO_CONNECTION);
} catch (Exception e) {
events.sendError(EventBus.ERROR_NO_PLACES);
return;
}

//TODO: some database operations
}

最佳答案

更彻底地查看了 Retrofit2 Response 类后,我发现有一个静态方法可以满足我的需要。所以,我只是改变了这一行:

return new Response<PlacesResults>(null, placesResults, null);

至:

return Response.success(placesResults);

现在一切正常。

关于java - 单元测试,自定义调用类改造2请求: Reponse has private access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39034404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com