我无法在 Spring 启动测试中自动装配服务 class
I can't autowire Service class in Spring Boot Test
我创建了使用 jdbc 处理数据库的 Dao 存储库。
我在我的服务 class 中自动装配了这个存储库。
然后我尝试在我的测试 class 中自动连接我的服务 class。
@SpringBootTest
public class ServiceTest {
@MockBean
private Dao dao;
@Autowired
private Service service;
@Test
void whenSomething_thanSomething() {
when(Dao.getStatus(anyString())).thenReturn("green");
assertEquals(0, service.getStatus(""));
}
//other tests...
}
@Service
public class Service {
private DaoImpl daoImpl;
@Autowired
public Service(DaoImpl daoImpl) {
this.daoImpl = daoImpl;
}
//...
}
@Repository
public class DaoImpl omplements Dao {
private NamedParameterJdbcOperations jdbc;
@Autowired
public DaoImpl(NamedParametedJdbcOperations jdbc) {
this.jdbc = jdbc;
}
//...
}
当我开始测试时,出现下一个错误:
Parameter 0 of constructor in Service required a bean of type DaoImpl that could not be found.
我该如何解决我的问题?
由于您在服务中注入 DaoImpl
-class 您可能打算模拟 DaoImpl
而不是 Dao
:
@SpringBootTest
public class ServiceTest {
@MockBean
private DaoImpl daoImpl;
...
}
我创建了使用 jdbc 处理数据库的 Dao 存储库。
我在我的服务 class 中自动装配了这个存储库。
然后我尝试在我的测试 class 中自动连接我的服务 class。
@SpringBootTest
public class ServiceTest {
@MockBean
private Dao dao;
@Autowired
private Service service;
@Test
void whenSomething_thanSomething() {
when(Dao.getStatus(anyString())).thenReturn("green");
assertEquals(0, service.getStatus(""));
}
//other tests...
}
@Service
public class Service {
private DaoImpl daoImpl;
@Autowired
public Service(DaoImpl daoImpl) {
this.daoImpl = daoImpl;
}
//...
}
@Repository
public class DaoImpl omplements Dao {
private NamedParameterJdbcOperations jdbc;
@Autowired
public DaoImpl(NamedParametedJdbcOperations jdbc) {
this.jdbc = jdbc;
}
//...
}
当我开始测试时,出现下一个错误:
Parameter 0 of constructor in Service required a bean of type DaoImpl that could not be found.
我该如何解决我的问题?
由于您在服务中注入 DaoImpl
-class 您可能打算模拟 DaoImpl
而不是 Dao
:
@SpringBootTest
public class ServiceTest {
@MockBean
private DaoImpl daoImpl;
...
}