Android
[Unit Test] 유닛 테스트 Component - 3. Method Stub
JK.Roh
2021. 1. 4. 17:16
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하여 테스트에 필요한 시나리오를 만들어낼 수 있습니다. 이를통해 테스트 대상을 의존 없이 독립적으로 테스트할 수 있습니다
참고
android/architecture-samples/todoapp - Stub 사용 예제