이전 내용들

Mockk

캡처

CapturingSlot 사영해서 인수를 캡처할 수 있습니다.

val car = mockk<Car>()

var slot = slot<Double>()
var list =mutableListOf<Double>()

every {
	car.recordTelemetry(
		speed = capture(slot),
		direction = Direction.NORTH
	)
} answers {
	println (slot.captured)

	OutCome.RECORDED
}

car.recordTelemetry(speed = 15, direction = Direction.NORTH)
car.recoreTelemetry(spped = 16, direction = Direction.SOUTH)

시간 초과 화인

mockk<MockClas> {
	every { sum(1, 2) } returns 4

	Thread {
		Thread.sleep(2000)
		sum(1, 2)
	}.start()

	verify(timeout= 3000) { sum(1, 2) }
}

Unit 모킹

class MockedClass {
	fun sum(a: Int, b: Int): Unit {
		println(a + b)
	}
}

val obj = mockk<MockedClass>()

justRun { obj.sum(any(), 3) } 

확장 함수 모킹

data class Obj(val value: Int)

class Ext {
    fun Obj.extensionFunc() = value + 5
}

with(mockk<Ext>()) {
    every {
        Obj(5).extensionFunc()
    } returns 11

    assertEquals(11, Obj(5).extensionFunc())

    verify {
        Obj(5).extensionFunc()
    }
}

private 함수 모킹