Mockiito错误的返回值?

时间:2018-07-10 08:30:16

标签: java android kotlin mocking mockito

你好,我对newInstance()方法片段有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)

谢谢您的建议。

1 个答案:

答案 0 :(得分:1)

这些值不会被忽略,您只是在不嘲笑它们。

transition-duration: 2s;

此行未在给定键下存储Mockito.doNothing() .`when`(bundle) .putBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE, true) 。在此行中,您说“当我使用指定的参数调用true方法时,我不希望您执行任何操作。” 要模拟查询调用,您需要使用其他Mockito方法。

bundle.putBoolean()

另一方面,此行告诉Mockito对于带有参数Mockito.doReturn(true) .`when`(bundle) .getBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE) 的{​​{1}}调用返回true。

换句话说,如果要返回存根值,则需要模拟查询调用。