我正在使用 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();
}
方法“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");
然后将 mock 注入(inject) m_orderSvc 并调用您的方法。
m_orderSvc.m_contractsDao = mock_contractsDao;
m_prog = new ProcessOrdersWorker(m_orderSvc, m_opportunitySvc, m_myprojectOrgSvc);
m_prog.work();
最后,验证 mock 是否被正确调用:
verify(mock_contractsDao, times(1)).save("Parameter I'm expecting");
关于java - 使用 Mockito,我如何验证一个方法是用某个参数调用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11802801/