当前位置: 首页 > 知识库问答 >
问题:

缺少的方法在这里调用验证(mock)。如何测试动态值

梁丘洲
2023-03-14

我想在调用doSomething()时验证是否调用过一次someMethod。在doSomething()中,正在调用currentTimeMillis(),该值将不完全相同。我如何测试这个?

当前我收到以下错误消息:

*org.mockito.exceptions.misusing.未完成验证例外:

此处缺少验证(模拟)的方法调用:-

正确验证示例:验证(模拟)。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"

我试过这个:

缺少方法调用验证(mock),但有一个?

Mockito在看起来正常时给出未完成的验证异常

共有1个答案

郎志
2023-03-14

Mockito。验证(某个类)。someMethod(System.currentTimeMillis())

验证的语法是否不正确

Mockito。验证(某个类)。someMethod(Mockito.eq(System.currentTimeMillis())

正如AutonomousApps建议的那样

Mockito.verify(ockito.any)

 类似资料:
  • 我正在面对 我已经检查了所有参数和要传递以验证的对象,但无法找出导致上述异常的原因 我要测试的条件, 测试用例 堆栈跟踪 我用同样的方法做了其他测试用例,它已经工作了,但是我不知道为什么它在这里不起作用,而且所有的方法都是公开的。请帮我弄清楚,谢谢

  • 我正在尝试做一个测试,它验证(使用Mockito v1.9.5的)在执行传递

  • 考虑以下代码: 我想做的是,在异常测试中,标记我希望调用doSomething1()。然而,在转换器上抛出异常。convert(),这意味着永远不会调用verify()调用。因此,verifyNoMoreInteractions()在after()中失败。 注意:这是一个非常通用的示例,用于隐藏我们的任何内部代码。

  • 我试图测试一个if条件,使用时(),然后返回(),但是当我运行我的测试用例时,它会给我丢失的方法调用,即使我已经嘲笑了实现该方法的类。 这就是我想嘲笑的如果条件 这就是我检查if条件的方式 我已经用@Mock annotation模拟了“request”,但仍然得到下面的异常。 我不确定我做错了什么。有人能帮忙吗?

  • 问题内容: 我正在使用以下内容。 这是我的utils课 这是被测课程的要点: 这是测试: 以上测试失败。给出的验证模式为空,但根据代码,如果订购成功,则必须发送电子邮件。 问题答案: 如果您要嘲笑行为(类似),则实际上无需调用。也就是说,这是我重写测试方法的动力: 我分为四个部分,以更好地突出显示正在发生的事情: 1.变量 我选择在此处声明任何实例变量/方法参数/模拟协作者。如果它在多个测试中使用