在 Scala 规范中模拟未来或

Mocking a Future Or in a Scala Spec

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

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

在我的规范中,我试图 return 成功 Future:

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

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

你不能在同一个上存根。但是你可以将它作为两个不同的调用存根,如下所示。

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

我们将 "findResult" 存根到 return Future[Success] 第一次和 Future[Failure] 第二次。

好吧,你需要决定你想要什么 return。根据测试,您可能想要 return 的左侧或 Or 的右侧。

例如

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