junit 如何在测试环境中初始化仓库?

5vf7fwbs  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(153)

我想测试我的一个控制器,它最初访问我的服务。我的服务然后初始化存储库来存储数据。在我的www.example.com中ControllerTest.java,我用@Mockbean注解了我需要的存储库和服务,但是我得到了错误,例如存储库属性没有初始化并且为空。
这是开头的样子:

@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

如何在Testingclass中初始化它们?谢谢!
尽管这是一个单元测试,我不想导入依赖项或其他类,但我还是想导入Repository。

tpxzln5u

tpxzln5u1#

你为什么不
顺便说一句,请考虑单独测试各层:TodoControllerTest用来测试TodoController的方法是否被调用并返回一些东西(比如mockMvc.perform(..)..andExpect(status().isOk())),而另一个TodoServiceTest用来测试真实的的工作(毕竟,控制器只是进一步委托请求,并返回响应):在那里模拟对存储库的调用,并验证服务是否正常工作。
最重要的是,试着使用一些真实的的存储库层,比如H2。有时候,由于太多的嘲笑,你没有真正测试你的代码。

相关问题