Java Spring引导Rest模板模拟:ResponseEntity.getBody()引发空指针异常
我是朱尼特和莫基托的新手。这里我试图模拟rest模板调用并返回一个响应实体。但它向我抛出了一个空指针异常。我不知道嘲笑有什么不对。谁能告诉我哪里做错了 JUnit5单元测试用例Java Spring引导Rest模板模拟:ResponseEntity.getBody()引发空指针异常,java,spring,spring-boot,junit,mockito,Java,Spring,Spring Boot,Junit,Mockito,我是朱尼特和莫基托的新手。这里我试图模拟rest模板调用并返回一个响应实体。但它向我抛出了一个空指针异常。我不知道嘲笑有什么不对。谁能告诉我哪里做错了 JUnit5单元测试用例 class MyTest { @InjectMocks private MyService service; @Mock private RestTemplate template; @BeforeEach void setUp(){ MockitoAnnotatio
class MyTest {
@InjectMocks
private MyService service;
@Mock
private RestTemplate template;
@BeforeEach
void setUp(){
MockitoAnnotations.initMocks(this);
}
private ResponseEntity<String> generateResponse(String body, HttpStatus http) {
return new ResponseEntity<>(body, http);
}
@Test
public void publishEventsuccessResponseTest() {
when(template.postForEntity(ArgumentMatchers.anyString(), ArgumentMatchers.any(),
ArgumentMatchers.<Class<String>>any())).thenReturn(generateResponse("uuid",
HttpStatus.OK));
String result = service.sentData("data");
Assertions.assertTrue("uuid".equals(result));
}
}
classmytest{
@注射模拟
私人MyService服务;
@嘲弄
私有rest模板;
@之前
无效设置(){
initMocks(this);
}
private ResponseEntity generateResponse(字符串体,HttpStatus http){
返回新的响应属性(body,http);
}
@试验
public void publisheventsccessresponsetest(){
当(template.postForEntity(ArgumentMatchers.anyString()、ArgumentMatchers.any()),
ArgumentMatchers.any())。然后返回(generateResponse(“uuid”),
HttpStatus.OK);
字符串结果=service.sentData(“数据”);
assertTrue(“uuid”.equals(result));
}
}
服务
class MyService {
public String sentData(String data) {
String jsonResp = "";
ResponseEntity<String> response;
try {
HttpEntity<String> requestBody = new HttpEntity<String>(data, headers);
response = restTemplate.postForEntity("url", requestBody, String.class);
} catch (Exception ex) {}
System.out.println(response); //value : Null
if (response.getStatusCodeValue() == 200) { // Null pointer exception
jsonResp = response.getBody();
}
return jsonResp;
}
}
classmyservice{
公共字符串数据(字符串数据){
字符串jsonResp=“”;
反应性反应;
试一试{
HttpEntity requestBody=新的HttpEntity(数据、标题);
response=restTemplate.postForEntity(“url”,requestBody,String.class);
}捕获(例外情况除外){}
System.out.println(响应);//值:Null
如果(response.getStatusCodeValue()==200){//Null指针异常
jsonResp=response.getBody();
}
返回jsonResp;
}
}
将jUnit4的@beforeach
更改为@beforeach
并添加public void setUp()
你的测试应该是绿色的