建立在Mamboking的答案之上:
ContractsDao mock_contractsDao = mock(ContractsDao.class);
when(mock_contractsDao.save(anyString())).thenReturn("Some result");
m_orderSvc.m_contractsDao = mock_contractsDao;
m_prog = new ProcessOrdersWorker(m_orderSvc, m_opportunitySvc, m_myprojectOrgSvc);
m_prog.work();
解决您的请求以验证参数是否包含某个值,我可以假设您的意思是该参数是String,并且您想测试String参数是否包含子字符串。 为此,您可以执行以下操作:
ArgumentCaptor savedCaptor = ArgumentCaptor.forClass(String.class);
verify(mock_contractsDao).save(savedCaptor.capture());
assertTrue(savedCaptor.getValue().contains("substring I want to find");
如果该假设是错误的,并且save()的参数是某种类型的集合,则将仅稍有不同:
ArgumentCaptor> savedCaptor = ArgumentCaptor.forClass(Collection.class);
verify(mock_contractsDao).save(savedCaptor.capture());
assertTrue(savedCaptor.getValue().contains(someMyTypeElementToFindInCollection);
如果您知道如何使用Hamcrest匹配器,也可以检查ArgumentMatchers。