下記のようなクラスがあるとします。

class Calc {
    companion object {
        fun toDouble(num: Int): Int = execute(num)
                private fun execute(num: Int) = num * 2
    }
}

この関数をmockkを使ってテストする場合は下記のように書きます

@RunWith(AndroidJUnit4::class)
class CalcSpec {
    @Before
    fun setUp() {
        mockkObject(Calc)
    }

    @Test
    fun spec() {
      every { Calc invoke "execute" withArguments listOf(ofType<Int>()) } returns 10
      assertThat(Calc.toDouble(1)).isEqualTo(10)
      verify(exactly = 1) { Calc.toDouble(1) }
    }

    @After
    fun tearDown() {
        unmockkAll()
    }
}

mockkObject(Calc)が重要で引数がvararg objects: Anyになっていて一体何を渡すのか…書き方がわからずmockkObject(Calc::class)、mockkObejct(Calc::class.java)にしたり色々試してしまった…。

公式ドキュメントにちゃんと書いてあるので読みましょう。

https://mockk.io/#object-mocks