我正在使用Mockito 1.9.0。我将如何验证一个方法只被调用一次,并且传递给它的某个字段包含某个值?在我的JUnit测试,我有使用Mockito,我该如何验证某个方法是否被某个参数调用?
@Before
public void setupMainProg() {
// Initialize m_orderSvc, m_opportunitySvc, m_myprojectOrgSvc
...
m_prog = new ProcessOrdersWorker(m_orderSvc, m_opportunitySvc, m_myprojectOrgSvc);
} // setupMainProg
@Test
public void testItAll() throws GeneralSecurityException, IOException {
m_prog.work();
}
的方法“工作”要求“m_orderSvc”的方法(在传递给对象一个参数)。 “m_orderSvc”又包含一个成员字段“m_contractsDao”。我想验证一下“m_contractsDao.save”被调用了一次,并且传递给它的参数包含一个特定的值。
这可能有点混乱。让我知道我如何澄清我的问题,我很乐意这样做。
仅供参考,你可以离开过',时间(1)',因为它总是暗示,除非你添加一个量词指定比只有一个时间以外的东西。而不是'any(String.class)',有一个更方便的'anyString()'。 – 2012-08-03 21:08:18
值得注意的是,传递给AFTER'verify'方法的参数是用'equals'与实际测试期间传递的参数进行比较的。所以,不管是什么方法(在mamboking的例子中是'save'方法),想一想每个参数的_type_,以及与'equals'的比较是否是你真正想要的。如果你想要用“equals”之外的东西来测试参数,你需要一个“ArgumentMatcher”(这可能是Kevin Welker的答案中的“ArgumentCaptor”)。 – 2012-08-05 05:45:54
你如何指定一次,而不是两次或更多? @ KevinWelker的评论说这是隐含的,但不确定它是否意味着一次,或者至少一次。 – aliteralmind 2015-06-19 18:53:19