使用Mockito,如何验证某个方法被调用并带有特定参数?

我正在使用Mockito 1.9.0。我将如何验证某个方法仅被调用一次,并且传递给它的字段之一包含某个值?在我的JUnit测试中,

@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”是否被调用一次,并且传递给它的参数包含某个值。

这可能有点令人困惑。让我知道如何澄清我的问题,我很高兴这样做。

回答:

首先,您需要创建一个模拟m_contractsDao并进行设置。假设该类是ContractsDao:

ContractsDao mock_contractsDao = mock(ContractsDao.class);

when(mock_contractsDao.save(any(String.class))).thenReturn("Some result");

然后将模拟注入m_orderSvc并调用您的方法。

m_orderSvc.m_contractsDao = mock_contractsDao;

m_prog = new ProcessOrdersWorker(m_orderSvc, m_opportunitySvc, m_myprojectOrgSvc);

m_prog.work();

最后,验证是否正确调用了模拟:

verify(mock_contractsDao, times(1)).save("Parameter I'm expecting");

以上是 使用Mockito,如何验证某个方法被调用并带有特定参数? 的全部内容, 来源链接: utcz.com/qa/401437.html

回到顶部