Mockito eq() API 的用途?

问题描述 投票:0回答:1

我开始使用 Kotlin 学习 Mockito,我对

eq()
API 有点困惑。

我注意到,无论我是否使用

eq()
,以下测试仍然通过:

@Test
fun init_shouldShowLoading() {
    viewModel.initGame()
    verify(loadingObserver).onChanged(eq(true))
}

使用 eq() 和不使用它有什么区别?我什么时候应该使用 eq()?非常感谢!

kotlin junit mockito mockito-kotlin
1个回答
0
投票

如果您只使用

eq
匹配器,那没关系,但是如果您需要使用不同的匹配器来匹配参数,则需要为所有参数提供匹配器。

这有效:

verify(someMock).someMethod(eq("param1"), eq("param2"))

这也是:

verify(someMock).someMethod(eq("param1"), anyString())

但这不是:

verify(someMock).someMethod("param1", anyString())

这在关于参数匹配器的Mockito 文档中明确涵盖了

参数匹配器警告: 如果您使用参数匹配器,则所有参数都必须由匹配器提供。

以下示例显示了验证,但同样适用于存根:

verify(mock).someMethod(anyInt(), anyString(), eq("third argument"));
//above is correct - eq() is also an argument matcher

verify(mock).someMethod(anyInt(), anyString(), "third argument");
//above is incorrect - exception will be thrown because third argument is given without an argument matcher.
© www.soinside.com 2019 - 2024. All rights reserved.