2016-11-07 9 views
1

ObjectまたはExceptionのいずれかを返すメソッドからの応答を模擬するためにMockitoに問題があります。もちろん、これはコンパイルされません未来を模索するか、スカラ仕様で

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

が、何である:

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

と私は成功しFutureを返すようにしようとしている私の仕様で:モックメソッドのシグネチャは次のようになります正しい構文ですか?

+0

返すものを決定する必要があります。テストによっては、「Or」の左または右の面を返すことができます。例えば。 'doReturn(Future.successful(Seq(" hello ")))。(クライアント).findResult(" 1234 ")' – rethab

+0

@rethabいいね、ありがとう!あなたが答えとしてこれを置くなら、私は受け入れるでしょう... – maloney

+0

そこに行く:D – rethab

答えて

2

あなたが返すものを決める必要があります。テストによっては、Orの左側または右側を返すことができます。

例:

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

1

両方でスタブすることはできません。しかし、以下のように2つの異なる呼び出しとしてスタブすることができます。

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

「findResult」をスタブして、Future [Success]を最初に返し、Future [Failure]を2番目に返します。

+0

これは実際に動作しますか?これをコンパイルしようとすると型の不一致エラーが発生する – maloney