Здесь отсутствует вызов метода для проверки (макет). Как проверить динамическое значение - PullRequest
0 голосов
/ 04 июля 2018

Я хочу убедиться, что someMethod вызывается один раз, когда я вызываю doSomething (). В doSomething () вызывается currentTimeMillis (), и это значение не будет точно таким же. Как я могу это проверить?

В настоящее время я получаю это сообщение об ошибке:

* org.mockito.exceptions.misusing.UnfinishedVerificationException:

Отсутствует вызов метода для проверки (макет) здесь: -> at myapplication.SomeLoginClassTest.trackDoSomething обрабатывает значения (SomeLoginClassTest.kt: 24)

Пример правильной проверки: проверить (макет) .doSomething () *

class SomeLoginClassTest {

    @get:Rule
    val mockitoRule = MockitoJUnit.rule()

    @Mock
    lateinit var someClass: SomeClass

    @InjectMocks
    lateinit var someLoginClass: SomeLoginClass

    @Test
    fun `trackDoSomething handles values`() {
        someLoginClass.doSomething()
        Mockito.verify(someClass).someMethod(System.currentTimeMillis())
    }
}

    open class SomeLoginClass @Inject constructor(private val someClass: SomeClass) {

    @RequiresApi(Build.VERSION_CODES.N)
    fun doSomething() {
        val elapsedTime = System.currentTimeMillis()
        someClass.someMethod(elapsedTime)
    }
}

open class SomeClass {

    @RequiresApi(Build.VERSION_CODES.N)
    public fun someMethod(elapsedTime: Long) {
        var elapsed = Random().longs()
    }
}

build.gradle:

// Dagger
api "com.google.dagger:dagger:2.13"
kapt "com.google.dagger:dagger-compiler:2.13"

api "com.google.dagger:dagger-android-support:2.13"
kapt "com.google.dagger:dagger-android-processor:2.13"

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
testCompile 'org.mockito:mockito-core:2.18.3'
testCompile 'junit:junit:4.12'

// Dependencies for Android unit tests
testImplementation "org.mockito:mockito-core:2.18.3"
androidTestImplementation "org.mockito:mockito-android:2.18.3"
androidTestImplementation "com.nhaarman:mockito-kotlin:1.5.0"

Я пробовал это:

Отсутствует вызов метода для проверки (макет), но есть один?

Mockito дает исключение UnfinishedVerificationException, когда кажется, что все в порядке

1 Ответ

0 голосов
/ 07 июля 2018

Mockito.verify(someClass).someMethod(System.currentTimeMillis())

- это неверный синтаксис для проверки, он должен быть

Mockito.verify(someClass).someMethod(Mockito.eq(System.currentTimeMillis()))

и в качестве комментария Автономные приложения предположили, что это должно быть

Mockito.verify(someClass).someMethod(Mockito.anyLong())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...