2017-05-19 5 views
2

このJavaコードに相当するKotlinは何でしょうか?KotlinでMockito doAnswerを使用

doAnswer(new Answer() { 
    @Override 
    public Object answer(InvocationOnMock invocation) throws Throwable { 
     Design design = new Design(); 
     GetDesign.Listener callback = (GetDesign.Listener) invocation.getArguments()[0]; 
     callback.onSuccess(design); 
     return null; 
    } 
}).when(someRepository).getDesign(any(GetDesign.Listener.class)); 

[UPDATE]は、いくつかのオプションを試した後、私は最終的にそれがmockito-kotlinを使用して働かせました。私はそれがdoAnswerを実装する最も快適な方法だと思います。構文はほぼ同じまま:私はこれらのKotlin Mockitoバインディングを検討してお勧め::https://github.com/

doAnswer { 
    callback = it.arguments[0] as AsyncCall.Listener 
    callback.onSuccess("Hello!") 
    null 
}.`when`(someRepository).execute(any()) 

完全なコードとbuild.gradleの構成はthis repository

+0

注記に記載されていますnhaarman/mockito-kotlinそれらはあなたにクールなものをたくさん与えます(例えば、\ 'の代わりに' \ 'の代わりに' 'いつでも' ')。 –

+0

私はそれを見ていましたが、それはKotlin 1.1.1で動作しますか? – voghDev

+0

私はSAM変換を行う必要があると思います。ここをクリックしてください:https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions – marstran

答えて

6
doAnswer { 
    val design = Design() 

    val callback = it.arguments[0] as GetDesign.Listener 
    callback.onSuccess(design) 

    null // or you can type [email protected] null 

}.`when`(someRepository).getDesign(any(GetDesign.Listener::class.java)) 
+1

@voghDev [それを受け入れる](https://meta.stackexchange.com/q/5234/)を検討してください。 179419)をクリックしてください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 – Sufian

関連する問題