組織の問題のために、別のクラス (クラス B) のコンパニオン オブジェクト内に拡張関数 (A.extension()) を定義するクラス (クラス A) があります。
私のテストでは、次のものが必要です。
- 実際のクラス A インスタンスを使用するには。
- A.extension() をモックします。
- クラス B のモック インスタンスを使用するには。
MockK-library を使用すると、その拡張機能を正常にモックできません。私はもう試した:
mockkObject(B.Companion) {
every { any<A>().extension() } returns whatIneed
}
結果: 拡張関数のモックされていないバージョンを実行しようとします。
mockkStatic(path.to.B.CompanionKt)
every { any<A>().extension() } returns whatIneed
結果: コンパニオン オブジェクトが見つかりません。
mockkStatic(A::extension) {
every { any<A>().extension() } returns whatIneed
}
結果: コンパイル エラー -> 'extension' はメンバーであると同時に拡張機能です。そのような要素への参照は許可されていません。
これをモックする方法に関して何か不足していますか? このモックが可能になるのを妨げるコード構造に関して、私は何か間違ったことをしていますか?
どんな助けでも大歓迎です。