В настоящее время я работаю над Spring Project и сейчас пишу тесты JUnit. Моя проблема в том, что jdbcTemplate
является нулевым (проверено с помощью отладчика) в методе getQuestions
, поэтому он не получает никаких данных из базы данных.
Все остальное работает просто отлично. Итак, вот мой код:
Я делаю это в начале класса контроллера:
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Autowired
private JdbcTemplate jdbcTemplate;
getQuestions:
@PostMapping("/question")
public List<String> getQuestions(@RequestBody int number){
String query = "SELECT t.question " +
"FROM question as t " +
"ORDER BY RAND() " +
"LIMIT " + number + ";";
this.questionList = jdbcTemplate.queryForList(query, String.class);
this.index = number;
return questionList;
}
Я делаю это в начале теста класса:
private MockMvc mockMvc;
@InjectMocks
private MainController controller;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(controller)
.build();
}
И метод испытания:
@Test
public void getQuestions() throws Exception{
int num = 4;
mockMvc.perform(
MockMvcRequestBuilders.post("/api/question")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(asJsonString(num))
.accept(MediaType.APPLICATION_JSON_UTF8)
).andExpect(MockMvcResultMatchers.status().isOk());
}
Теперь я не знаю, как заставить jdbcTemplate
не быть нулевым. Также в обычном приложении метод работает отлично.