我想測驗我的一個控制器,它最初訪問我的服務。然后我的服務初始化存盤庫以存盤資料。在我的 ControllerTest.java 中,我使用 @Mockbean 注釋了我需要的存盤庫和服務,但是我收到了錯誤,例如 Repository-Attribute 未初始化并且為空。
開頭是這樣的:
@ExtendWith(SpringExtension.class)
//In this test, we want to launch only StudentController. All other controllers and mappings will not be launched when this unit test is executed.
@WebMvcTest(value = TodoController.class)
@WithMockUser
public class TodoControllerTest {
// To launch only TodoController
@Autowired
private MockMvc mockMvc;
@MockBean
private TodoService todoService;
@MockBean
private ToDoRepository todoRepository;
@Test
public void retrieveDetailsForEintrag() throws Exception {
Todo mockTodo = new Todo("Drink", "01.11.2022");
todoRepository.save(mockTodo); //FIRST ERROR HERE
我如何在測驗類中初始化它們?謝謝!
盡管這是一個單元測驗并且我不想匯入依賴項或其他類,但我正在考慮匯入存盤庫。
uj5u.com熱心網友回復:
為什么你不org.mockito.Mockito.when(todoRepository.save(org.mockito.ArgumentMatchers.any(Todo.class))).then(....
順便說一下,考慮單獨測驗你的層: TodoControllerTest 測驗 TodoController 的方法正在被呼叫并回傳一些東西(如mockMvc.perform(..)..andExpect(status().isOk())),另一個 TodoServiceTest 測驗實際作業(畢竟,控制器只是進一步委托請求,并回傳回應):模擬對存盤庫的呼叫,并驗證服務是否作業。
最重要的是,嘗試使用一些真正的存盤庫層,例如 H2。有時由于過多的嘲笑,您并沒有真正測驗您的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/529458.html
標籤:测试朱尼特无效的初始化
