Jav*_*ing 14 junit spring mockito resttemplate
如何为以下方法编写mockito junit:
@Autowired
RestTemplate restTemplate;
ResponseEntity<?> execute(final String url, HttpMethod httpMethod,
HttpEntity<?> entityRequest,
String.class,
Map<String, String> urlVariables){
restTemplate.exchange(url, httpMethod, entityRequest, responseType, urlVariables);
}
Run Code Online (Sandbox Code Playgroud)
请帮我怎么写.
小智 17
@RunWith(MockitoJUnitRunner.class)
public class ToTestTest {
@InjectMocks
private YourClass toTest;
@Mock
private RestTemplate template;
@Test
public void test() {
toTest.execute(Mockito.anyString(), Mockito.any(), Mockito.any(),
Mockito.any(), Mockito.any());
Mockito.verify(template, Mockito.times(1))
.exchange(Mockito.anyString(),
Mockito.<HttpMethod> any(),
Mockito.<HttpEntity<?>> any(),
Mockito.<Class<?>> any(),
Mockito.<String, String> anyMap());
}
}
Run Code Online (Sandbox Code Playgroud)
这取决于你想要什么。
使用模拟的一种方法是使execute方法的调用更容易。为此,您可以使用实际参数的模拟版本,例如HttpMethod和HttpEntity。如果底层exchange方法需要这些参数的某些行为,您可能需要使用mockito的when...thenReturn方法将其存根。
一旦设置了这些模拟参数以便您可以调用您的execute方法,您将需要检查其结果是否正确。
为了检查返回值,您可以使用传统的 JUnit 断言。
此外,您可能想要检查与模拟对象的某些交互是否确实发生。为此,您可以使用mockito的verify方法来检查,例如,某些HttpEntity方法是否确实被调用。
从技术上讲,您还可以验证其余模板的exchange方法是否被调用。为此,您需要模拟 RestTemplate 并将模拟注入到正在测试的类中。然后你可以使用mockitoverfiy来检查是否exchange以正确的方式调用。这通常是明智的做法,特别是当您的被测类中有更多方法需要测试时。对于目前的execute方法来说,这似乎有点矫枉过正。
| 归档时间: |
|
| 查看次数: |
27332 次 |
| 最近记录: |