我想测试一下
Tasklet
使用
@Autowired
RestTemplateBuilder
建立一个
RestTemplate
. 这个
执行请求。我想嘲笑这个请求的回应。
@ContextConfiguration(classes = DogTasklet.class )
@RunWith(SpringRunner.class)
public class DogTaskletTest {
@MockBean
RestTemplateBuilder restTemplateBuilder;
private RestTemplate restTemplate = new RestTemplate();
@Autowired
private Tasklet sut;
@Before
public void setUp() throws Exception {
given(this.restTemplateBuilder.build()).willReturn(restTemplate);
}
}
这个
given()
语句抛出NPE,因为
RestTemplateBuilder
实例为
null
. 我错过了什么?
null ResponseEntity
sut.execute()
@RunWith(SpringRunner.class)
public class DogTaskletTest {
@TestConfiguration
static class TestConfig {
@Bean
RestTemplateBuilder restTemplateBuilder() {
RestTemplateBuilder restTemplateBuilder = mock(RestTemplateBuilder.class);
RestTemplate restTemplate = mock(RestTemplate.class);
ResponseEntity responseEntity = mock(ResponseEntity.class);
given(restTemplateBuilder.build()).willReturn(restTemplate);
given(restTemplate.execute(any(), any(), any(), any())).willReturn(responseEntity);
given(responseEntity.getBody()).willReturn("{}");
return restTemplateBuilder;
}
@Bean
DogTasklet sut() {
return new DogTasklet("string", restTemplateBuilder());
}
}
@Test
public void execute() throws Exception {
// when
sut.execute(stepContribution, chunkContext);
}
}