Android
[Unit Test] 유닛 테스트 Component - 4. Spy Object
JK.Roh
2021. 1. 4. 17:22
1. Annotation
2. Mock Object
3. Method Stub
4. Spy Object
5. Assert
6. Verify
4. Spy Object
class UnitLocalDataSourceTest {
lateinit var unitLocalDataSource: UnitLocalDataSource
val map = mutableMapOf<String, Unit<out Settings>>()
// 실제 Map 객체를 감싸 Spy 객체 생성
@SpyK
val spyMap = spyk(map)
@MockK
lateinit var unitSettings: UnitSettings
@MockK
lateinit var testUnit: Unit<UnitSettings>
@Test
fun testPutUnit() {
unitLocalDataSource.putUnit(testUnit)
verify {
// Spy 객체로 행동 검증
spyMap.put(testUnit.id.toString(), testUnit)
}
}
}
Spy 객체는 실제 객체를 감싸 지정된 메서드만 Stub하고 나머지 부분은 원래의 행동을 수행하도록 합니다.
Mock 객체는 실제 객체가 필요하지않은 반면, Spy 객체는 실제 객체를 감싸 생성합니다.
Spy 객체는 메서드를 Stub하고 행위를 검증할 수 있습니다.