LoginSignup
5
0

More than 1 year has passed since last update.

MockKでトップレベル関数をモックする

Posted at

MockKでトップレベル関数をモックする方法をメモがてら記載します。

こんな log 関数があった場合。

Ext.kt
package com.example

fun log(message: String) {
    Log.d("log", message)
}

こんな感じで書けばOKでした。

ExtTest.kt
class ExtTest {

    @Test
    fun test_log() {
        mockkStatic("com.example.ExtKt") // ①
        every { log(any()) } just runs // ②

        // ・・・テストコード・・・
    }
}

ポイント:bulb:

mockkStatic を使用し、トップレベル関数が定義されているクラスを指定します。
今回の場合、

  • package が com.example
  • ファイル名が Ext.kt

なので、 com.example.ExtKt を指定してあげればOK。

② あとは普通にMockKを使うのと同様に、 every を使って log 関数が呼ばれた場合の処理を指定してあげます。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0