Я хочу убедиться, что 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, когда кажется, что все в порядке