MissingMethodInvocationException: ошибка модульного теста при доступе к последнему классу в Kotlin - PullRequest
0 голосов
/ 30 октября 2018

У меня есть очень простой класс, который проверяет длину строки. Я пытаюсь написать тестовый пример

class UTComponent {
    fun isThisValidString(input: String): Boolean {
        return (input.length > 2)
    }
}

и вот тестовый класс:

@RunWith(PowerMockRunner::class)
@PrepareForTest(UTComponent::class)
class UTComponentTest {

    @Mock
    lateinit var subject: UTComponent

    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)
        PowerMockito.mockStatic(UTComponent::class.java)
    }

    @Test
    fun testInvalidateIfItValidString() {
        Mockito.`when`(subject.isThisValidEmail("")).thenReturn(false)
    }
}

но это бросает

org.mockito.exceptions.misusing.MissingMethodInvocationException: Когда () требуется аргумент, который должен быть «вызовом метода для макета». Например: когда (mock.getArticles ()) thenReturn (статьи). ...

Создание метода открытого исправления проблемы, но это то, чего я не хотел делать.

open fun isThisValidEmail(input: String): Boolean {
        return (input.length > 0)
    }

Обратите внимание, я использую Kotlin, где по умолчанию класс и методы являются окончательными. Но это то, что PowerMockRunner поможет исправить правильно!

Что-нибудь, что мне здесь не хватает?

...