0

組織の問題のために、別のクラス (クラス 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' はメンバーであると同時に拡張機能です。そのような要素への参照は許可されていません。

これをモックする方法に関して何か不足していますか? このモックが可能になるのを妨げるコード構造に関して、私は何か間違ったことをしていますか?

どんな助けでも大歓迎です。

4

1 に答える 1