Sw-spec/unit-test-and-mock

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

Links

Codes (Counter)

CounterView.kt

interface CounterView {
    fun setCounter(value: Int)
}

CounterPresenter.kt

class CounterPresenter(val view: CounterView) {
    var counter: Int = 0

    fun onPlusButtonClicked() {
        counter++
        updateCounterInView()
    }
    fun onMinusButtonClicked() {
        counter--
        updateCounterInView()
    }
    fun onResetButtonClicked() {
        reset()
    }
    fun start() {
        reset()
    }

    private fun reset() {
        counter = 0
        updateCounterInView()
    }

    private fun updateCounterInView() {
        view.setCounter(counter)
    }
}

CounterPresenterTest.kt

import org.junit.Before
import org.junit.Test
import org.mockito.Mockito.*

/**
 * Created by jittat on 23/3/2561.
 */
class CounterPresenterTest {
    lateinit var view: CounterView
    lateinit var presenter: CounterPresenter

    @Before
    fun init() {
        view = mock(CounterView::class.java)
        presenter = CounterPresenter(view)
    }

    @Test
    fun testResetCounter() {
        presenter.start()
        verify(view).setCounter(0)
    }

    @Test
    fun testAddCounter() {
        presenter.start()
        presenter.onPlusButtonClicked()

        val inOrder = inOrder(view)
        inOrder.verify(view).setCounter(0)
        inOrder.verify(view).setCounter(1)
    }
}

Codes (Calculator)

CalculatorView.kt

interface CalculatorView {
    fun setDisplayValue(msg: String)
}

CalculatorPresenter.kt

class CalculatorPresenter(val view: CalculatorView) {
    fun start() {
    }
    fun onDigitClicked(digit: Int) {
    }
    fun onClearClicked() {
    }
}

CalculatorPresenterTest.kt

import org.junit.Before
import org.junit.Test
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify

class CalculatorPresenterTest {
    lateinit var view: CalculatorView
    lateinit var presenter: CalculatorPresenter

    @Before
    fun init() {
        view = mock(CalculatorView::class.java)
        presenter = CalculatorPresenter(view)
    }

    @Test
    fun testStart() {
        presenter.start()
        verify(view).setDisplayValue("0")
    }
}