2017-05-11 8 views
1

私はScalaを初めて使い、ScalaのPlayアプリケーションのテストを書いています。 PlayアプリはすでにJavaで書かれています。Mockito Scalaオーバーロードされたメソッドの値次に代替メソッドを返す

は、私はスカラ座に基づいて私のテストを書かれているアクションはPOJOの

として別のパッケージで定義されてい

public RefreshResponse process(RefreshRequest request) throws Exception { 
    return this.oauthService.token(request.oauthUrl, request.clientId, request.clientSecret, request.refreshToken) 
     .thenCompose(oauthToken -> this.processHelper(request.withOAuthToken(oauthToken))) 
     .get(); 
} 

つのパブリックメソッドプロセスガイドを持っているRefreshServiceを持って

このサービスを模擬しようと私は次のコードを使用した:

var mockRefreshService = mock[RefreshService] 
when(mockRefreshService.process(_: RefreshRequest)) 
    thenReturn (new RefreshResponse) 

Scalaから次のコンパイラエラーが発生し、型があいまいになる可能性があります。

[エラー] /home/joey/Projects/sntdb/test/controllers/ApiControllerSpec.scala:31:メソッドのオーバーロード選択肢:

[エラー]($ 1×:actions.RefreshRequest => actions.RefreshResponse、$×2:actions.RefreshRequest => actions.RefreshResponse *)org.mockito.stubbing.OngoingStubbing [actions.RefreshRequest =>アクション。 RefreshResponse]

[エラー](xは$ 1:actions.RefreshRequest => actions.RefreshResponse)org.mockito.stubbing.OngoingStubbing [actions.RefreshRequest => actions.RefreshResponse]

[エラー](actions.RefreshResponse)に適用することはできません

[エラー](mockRefreshService.process(_:リフレッシュ要求))thenReturn(新しいRefreshResponse)

もう情報を聞かせてください必要な場合私は知っている。そうでなければ、誰かが何らかのアイディアを持っていれば、それは評価されるだろ

ありがとうございます!

答えて

0

ここに来てくださった方には、私はこれを解決しましたが、なぜこれが機能するのかについてのいくつかの洞察が大好きです。

私は_:RefreshRequestを[RefreshRequest]に置き換えました。私はこれを思っています。

しかし、輸入によって私はうまくいった。

私は

import org.mockito.ArgumentMatchers.any 

を輸入してthatsのすべてが

を働いていたとき、私は

import org.mockito.Matchers.any 

をインポートしたとき、私は、エラーマッチャーそれについてのドキュメントを見てみると

value any is not a member of org.mockito.Matchers.any 

を得ました〜です引数Matchersのサブクラスはどのようにそれを持っていなかったのですか?

ありがとうございました

関連する問題