티스토리 뷰

1. Annotation
2. Mock Object
3. Method Stub
4. Spy Object
5. Assert
6. Verify

3. Method Stub

 

class UnitRepositoryImplTest {
    @MockK(relaxUnitFun = true)
    lateinit var unitDataSource: UnitDataSource
    
    lateinit var unitRepository: UnitRepository
    private val unitRequest = "unitId"
    
    @Before
    fun setup() {
        MockKAnnotations.init(this)
        unitRepository = UnitRepositoryImpl(unitServiceApi, unitDataSource, scheduler, unitMapper, errorTypeMapper)
    }
    
    @Test
    fun testGetUnit_benefit_success() {
        val expected = Unit()
        
        // Mock 객체의 메서드 스텁
        every { unitDataSource.getUnit(id.toString()) } returns expected
        
        val result = unitRepository.getUnit(id.toString())
        
        Assert.assertEquals(result, expected)
        verify {unitDataSource.getUnit(id.toString()) }
    }
}

 

Stub은 기존 코드를 흉내내거나 아직 개발되지 않은 코드를 임시로 대치하는 역할을 합니다.
Stub은 자기 자신과 매개변수를 선언하고 테스트를 위한 시나리오에서 예상되는 값을 돌려줍니다.

인터페이스의 실제 객체 대신 Mock 객체를 생성하고 메서드를 Stub하여 테스트에 필요한 시나리오를 만들어낼 수 있습니다. 이를통해 테스트 대상을 의존 없이 독립적으로 테스트할 수 있습니다

 

참고

Test Stub이란?

android/architecture-samples/todoapp - Stub 사용 예제

 

댓글