我看过this post但仍然困惑。我想要做的是,当我打电话给我的模拟服务时,我想要调用另一个方法。特别让我告诉你,我嘲讽类(记住我试图测试演示类,如果该事项):Mockito - 如何通过模拟电话触发呼叫?
这里是NewsService类我正在嘲讽:
public class NewsService implements INewsServiceContract {
Gson gson;
Callback mCallback;
public NewsService() {
configureGson();
}
private static String readStream(InputStream in) {
StringBuilder sb = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(in));) {
String nextLine = "";
while ((nextLine = reader.readLine()) != null) {
sb.append(nextLine);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
public void setCallBack(Callback cb) {
mCallback = cb; // or we can set up event bus
}
private void configureGson() {
GsonBuilder builder = new GsonBuilder();
builder.excludeFieldsWithoutExposeAnnotation();
gson = builder.create();
}
@Override
public void loadResource() {
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
String readStream = "";
try {
URL url = new URL("https://api.myjson.com/bins/nl6jh");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
readStream = readStream(con.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
return readStream;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
NewsService.this.onRequestComplete(result);
}
}.execute();
}
public void onRequestComplete(String data) {
data = data.replaceAll("\"multimedia\":\"\"", "\"multimedia\":[]");
news.agoda.com.sample.Model.NewsEntities newsEntities = gson.fromJson(data, NewsEntities.class);
mCallback.onResult(newsEntities);
}
}
其分毫花哨,最后在onRequestComplete它只是打电话给听众的结果。听众是这种情况是我的主持人,如果这件事。
在我的测试案例中,我想验证这个回调实际发生了。我曾尝试下面的测试与我的嘲笑服务:
@org.junit.Test
public void shouldDisplayResultsOnRequestComplete() throws Exception {
presenter.loadResource();
when(service.loadResource()).thenAnswer(new Answer<Object>() {
Object answer(InvocationOnMock invocation) {
//what do i do in here ?
}
});
}
所有我想要测试的是,如果有人叫service.loadResouces(),那么他们得到一个回调的结果。你能帮我吗 ?