2016-11-07 35 views
1

遇到麻烦与的Mockito嘲笑从返回任一种ObjectException的方法的响应。嘲笑的方法的签名是这样的:惩戒期货或在Scala的规格

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

,并在我的功能我想只返回一个成功的Future

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

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

+0

那么你需要决定你想要返回什么。根据测试,您可能想要返回“Or”的左侧或右侧。例如。 'doReturn(Future.successful(SEQ( “你好”)))。当(客户端).findResult( “1234”)' – rethab

+0

@rethab尼斯一个,谢谢!如果你把这个作为一个答案,我会接受... – maloney

+0

你去:d – rethab

回答

2

那么你需要决定要返回什么。根据测试,你可能需要返回左边或Or的右侧。

例如,

doReturn(Future.successful(Seq("hello"))).when(client).findR‌​esult("1234")

1

你不能在同一个存根两者。但是你可以将它作为下面两个不同的调用来存储。

when(client.findResult("1234")).thenReturn(Future.successful(Seq("test"))).thenReturn(Future.failed(new MyException())) 

我们磕碰“findResult”回到未来[成功]第一次与未来[失效]第二次。

+0

这是否实际工作?尝试编译时遇到类型不匹配错误 – maloney