gpt4 book ai didi

java - Mockiito返回值错误?

转载 作者:行者123 更新时间:2023-12-02 11:02:05 25 4
gpt4 key购买 nike

您好,我对 newInstance() 方法 fragment 进行了 2 个测试。

但看起来我做错了什么,因为 Mockito 忽略了我的 bundle 值。

    @Test
fun onNewInstanceTest_isNotArchive() {

val bundle = Mockito.mock(Bundle::class.java)
Mockito.doNothing().`when`(bundle).putBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE, false)

val eventPlannerListFragment = EventPlannerListFragment.newInstance(bundle)

val arguments = eventPlannerListFragment.arguments
val isArchive = arguments!!.getBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE)

assertFalse(isArchive)
}

@Test
fun onNewInstanceTest_isArchive() {

val bundle = Mockito.mock(Bundle::class.java)
Mockito.doNothing().`when`(bundle).putBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE, true)

val eventPlannerListFragment = EventPlannerListFragment.newInstance(bundle)

val arguments = eventPlannerListFragment.arguments
val isArchive = arguments!!.getBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE)

assertTrue(isArchive)
}

但看起来这些值被忽略了。

java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at com.fs.wfm.ui.EventPlannerListFragmentTest.onNewInstanceTest_isArchive(EventPlannerListFragmentTest.kt:67)

感谢您的建议。

最佳答案

这些值不会被忽略,您只是没有 mock 它们。

Mockito.doNothing()
.`when`(bundle)
.putBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE, true)

此行不会在给定键下存储 true。通过这一行,您可以说“当我使用指定参数调用 bundle.putBoolean() 方法时,我希望您什么也不做。”为了模拟查询调用,您需要不同的 Mockito 方法。

Mockito.doReturn(true)
.`when`(bundle)
.getBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE)

另一方面,此行告诉 Mockito 对于带有参数 EventPlanner.EVENT_PLANNER_IS_ARCHIVEbundle.getBoolean() 调用返回 true。

换句话说,如果您希望它返回 stub 值,则需要模拟查询调用。

关于java - Mockiito返回值错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51260553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com