티스토리 뷰

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하고 행위를 검증할 수 있습니다.

 

참고 - Mockito - Using Spies

댓글