在 Scala 规范中模拟未来或
Mocking a Future Or in a Scala Spec
我在使用 Mockito 模拟来自 return 是 Object
或 Exception
的方法的响应时遇到问题。模拟方法的签名如下所示:
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).findResult("1234")
我在使用 Mockito 模拟来自 return 是 Object
或 Exception
的方法的响应时遇到问题。模拟方法的签名如下所示:
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).findResult("1234")