你好,我对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)
谢谢您的建议。
答案 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。
换句话说,如果要返回存根值,则需要模拟查询调用。