我有这样的REST控制器:弹簧单元测试结果NoSuchBeanDefinitionException:类没有合格豆 'org.springframework.mail.javamail.JavaMailSender'
package com.company.rest;
@RestController
@RequestMapping("/v1/orders")
public class OrderController {
@Autowired
private OrderService orderService;
...
作为OrderService
实现:
package com.company.service.impl;
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private MessageService messageService;
...
和MessageService
执行:
package com.company.service.impl;
import org.springframework.mail.javamail.JavaMailSender;
@Service
public class MessageServiceImpl implements MessageService {
@Autowired
public JavaMailSender emailSender;
...
这个工作在开发环境中完美,但我对OrderController
这个单元测试(基于this教程):
package com.company.test;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AdminApplication.class)
@WebAppConfiguration
public class OrderTest {
private MockMvc mockMvc;
@Autowired
private OrderService orderService;
...
导致:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.mail.javamail.JavaMailSender' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
为什么这种关系在生产满足但没有在测试?我需要做什么才能让这个单元测试成功注入(或模拟)一个JavaMailSender
的实现?
您可以发布具有提到 –