JUnit / Mockito: java.lang.IllegalStateException: «поле» не должно быть пустым - PullRequest
0 голосов
/ 02 октября 2018

Я довольно новичок в Mockito и тестировании, но я не могу понять, что именно не так с этим, это простая структура MVP

lateinit var activity: MainActivity

private val aET = mock<EditText>()
private val aValue = "a"
private val bET = mock<EditText>()
private val bValue = "b"
private val resultTextView = mock<TextView>()

private val aMockEditable: Editable = mock()
private val bMockEditable: Editable = mock()


@Before
fun setup() {
    activity = mock()
    activity.presenter = mock()

    whenever(activity.a).thenReturn(aET)
    whenever(activity.b).thenReturn(bET)

    whenever(aET.text).thenReturn(aMockEditable)
    whenever(bET.text).thenReturn(bMockEditable)

    whenever(aMockEditable.toString()).thenReturn(aValue)
    whenever(bMockEditable.toString()).thenReturn(bValue)

    whenever(activity.resultText).thenReturn(resultTextView)
}

@Test
fun onPlus() {
    activity.onPlusClicked()

    verify(activity.presenter).onPlusClicked(aValue, bValue)
}

Код MainActivity:

fun onPlusClicked() {
    presenter.onPlusClicked(a.text.toString(), b.text.toString()) // ERROR: java.lang.IllegalStateException: a must not be null
}

override fun showResult(result: String) {
    resultText.text = result
}

presenter в итоге позвонит showResult

Спасибо!

1 Ответ

0 голосов
/ 03 октября 2018

Я не знаю Kotlin, но я думаю, что строка

activity.presenter = mock()

должна быть изменена на что-то вроде

var presenter = mock()
whenever(activity.presenter).thenReturn(presenter)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...