2017-07-06 20 views
2

コトルとはどのようにしてassertThat(foo, instanceOf(Bar.class))と書いてみませんか?Kotlin for assertThat(foo、instanceOf(Bar.class))

はそれが好きではないようだ.class

私はもう少し「正確な」ちょうど assertTrue(foo is Bar)可能な場合よりも、アサーションのために行きたい

+0

AssertJはところで表明のための素晴らしい流暢なAPIです。 'assertThat(foo).isInstanceOf(Bar :: class.java)'のように記述します。大きな利点は、 'instanceof()'のような全てのコンポーネントをハードに知ってはいけないということです。これは、流暢なAPIのコード補完によってすべての可能性がリストされているからです。 – guenhter

答えて

3

Bar::classは、KClassのインスタンスを返します。これは、Javaのに相当するKotlinです0。

instanceOfメソッドは、ではなくClassインスタンスでなければならないので、Bar::class.javaを使用して変換する必要があります。

だからあなたの主張は次のようにする必要があります:あなたはhere見つけることができますJavaの相互運用機能について

assertThat(foo, instanceOf(Bar::class.java)) 

詳細情報。

また、あなたがあなたの主張に多くの流暢さを追加することができHamkrestライブラリを見てすることができます

assert.that(foo, isA<Bar>()) 
+0

これは完全ではありません: 'Bar.class'はkotlinでは使用できません。それは 'Bar :: class'とは何ですか? – guenhter

+0

@guenhterあなたは正しいです、ありがとう、誤植 – ledniov

+0

Hamkrestのリンクに感謝 –

関連する問題