模拟未来或Scala规范

时间:2016-11-07 11:37:17

标签: scala mockito specs2

我在使用Mockito模拟来自返回ObjectException的方法的响应时遇到问题。模拟方法的签名如下所示:

def findResult(request: String): Future[Seq[String] Or MyException] =

在我的规范中,我试图回归成功的Future

when(client.findResult("1234")) thenReturn Future.successful[Seq[String] Or MyException](Seq("Hello"))

这当然不能编译,但正确的语法是什么?

2 个答案:

答案 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]。