【问题标题】:Have legit Spring beans injected into a mock bean将合法的 Spring bean 注入模拟 bean
【发布时间】:2021-12-18 10:19:49
【问题描述】:

任何人都知道如何将普通的 spring bean 注入到我的 MVC 控制器中?

@WebMvcTest(TaskController.class) class TasksManagerApplicationTests {
@Spy // WRONG
private TasksRepository taskDao;
@MockBean
private AssignmentService service;
@MockBean
private ToDoClient client;
@Autowired
private MockMvc template;
...

NoSuchBeanDefinitionException:没有“com.acme.tskmngt.dao.TasksRepository”类型的合格 bean

我不想在这里模拟每个依赖项,它似乎需要做很多工作,只有外部耦合的。 注意:TasksRepository 是 Spring Data JPA JpaRepository ;已经尝试添加@DataJpaTest 并失败(配置错误:发现@BootstrapWith 的多个声明)。

感谢您的帮助

【问题讨论】:

  • 为此,您需要使用@SpringBootTest 进行完整的集成测试,而不是使用@WebMvcTest 进行切片测试。

标签: spring mockito springmockito


【解决方案1】:

感谢 Joao Dias 的评论,这是一个(确实更重但)可执行代码:

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
@Slf4j class TasksManagerApplicationTests {
@Mock
private TaskController controller;

@MockBean
private AssignmentService service;
@MockBean
private ToDoClient client;
@Autowired
private MockMvc template;

@LocalServerPort
private int serverport;         // random web server port
@Autowired
private ObjectMapper mapper;    // Jackson serializer

【讨论】:

    猜你喜欢
    • 2011-11-13
    • 2011-09-09
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多