我在使用Mockito模拟来自返回Object
或Exception
的方法的响应时遇到问题。模拟方法的签名如下所示:
def findResult(request: String): Future[Seq[String] Or MyException] =
在我的规范中,我试图回归成功的Future
:
when(client.findResult("1234")) thenReturn Future.successful[Seq[String] Or MyException](Seq("Hello"))
这当然不能编译,但正确的语法是什么?
答案 0 :(得分:4)
你需要决定你想要归来的东西。根据测试,您可能希望返回private class DownloadXmlTask extends AsyncTask<String, Void, List<Place>> {
private boolean mConnectionError;
private boolean mXMLError;
@Override
protected List<Place> doInBackground(String... urls) {
try {
//Here I want to recieve the list
return loadXmlFromNetwork(urls[0]);
} catch (IOException e) {
mConnectionError = true;
return null;
} catch (XmlPullParserException e) {
mXMLError = true;
return null;
}
}
@Override
protected void onPostExecute(List<Place> result) {
if (result != null) {
MapView map = (MapView) findViewById(R.id.map);
IMapController mapController = map.getController();
mapController.setZoom(17);
//Here I want to use the latitude and longitude variables of the List
GeoPoint myLocation = new GeoPoint(PLACEHOLDER(latitude), PLACEHOLDER(longitude));
mapController.animateTo(myLocation);
} else {
// An error happened, check mConnectionError and
// mXMLError in order to display an error message.
}
}
}
的左侧或右侧。
例如
Or
答案 1 :(得分:1)
你不能同时存在两者。但是您可以将其存储为两个不同的调用,如下所示。
when(client.findResult("1234")).thenReturn(Future.successful(Seq("test"))).thenReturn(Future.failed(new MyException()))
我们正在使用“findResult”来第一次返回Future [Success]而第二次返回Future [Failure]。