我基本上是使用 Mockito 框架的新手。
@Test
@SuppressWarnings("rawtypes")
public void testGetCaseDetailResponse() throws Exception {
HashMap requestM = new HashMap<String, String>();
requestM.put("transactionId", "******");
requestM.put("clientSystem", "URW");
requestM.put("loginId", "JUSTINN");
Mockito.when(caseDetailsService.getSAPCaseDetail(Mockito.any(), requestM))
.thenReturn(sapCaseDetailResponse);
}
以下代码部分理想情况下应 stub 方法 caseDetailsService.getSAPCaseDetail 正在调用该方法。我在 Debug模式下运行并验证了情况确实如此。
Mockito.when(caseDetailsService.getSAPCaseDetail(Mockito.any(), requestM))
.thenReturn(sapCaseDetailResponse);
有关初始化部分的更多信息
@RunWith(MockitoJUnitRunner.class)
public class CaseDetailsServiceTest {
@Mock
RestTemplate restTemplate;
@Mock
AuthUtil authUtil;
@Mock
HttpHeaders httpHeaders;
@Mock
private HttpServletRequest httpRequest;
@Mock
SapServiceClient sapServiceClient;
@Mock
DateConvertUtils dateConvertUtils;
@Mock
CaseConverter caseConverter;
@InjectMocks
CaseDetailsService caseDetailsService;
我可能会遗漏一些东西,任何帮助将不胜感激,提前致谢!
最佳答案
这里:
Mockito.when(caseDetailsService
但是:
@InjectMocks
CaseDetailsService caseDetailsService;
@InjectMocks
的要点是将之前创建的模拟对象插入到正在测试的生产类的实例中。
换句话说:caseDetailsService
不是模拟。因此,您不能使用 when(caseDetailsService...)
。
你看,when()
用于指定 Mockito 创建的模拟对象的行为。您不能将 when()
应用于非模拟的内容。
因此,真正的答案是:退后一步,阅读有关 Mockito 的优秀教程,以及它的注释的真正含义。模拟框架很复杂,你无法通过“反复试验”来学习它们!
一个很好的起点: vogella 上的教程.
关于java - Mockito 不是 stub 该方法,而是调用该方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57771931/