我有一个 Spring Boot v2.1.0.RELEASE
应用程序。
使用此测试配置类:
@Configuration
@EnableJpaRepositories(basePackages = "com.bonansa")
@ComponentScan({"com.bonansa"})
@EnableTransactionManagement
@PropertySource("classpath:application.properties")
@EnableMBeanExport(registration= RegistrationPolicy.IGNORE_EXISTING)
public class ApplicationTestConfig {
}
此application.properties文件:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
这个测试呢
@RunWith(SpringRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = ApplicationTestConfig.class)
@MockBeans({
@MockBean(UserService.class),
// @MockBean(UserRepository.class)
})
public class AuthorisationControllerTest implements WebMvcConfigurer {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testA() throws Exception {
}
}
如果我不嘲笑 UserRepository.class
,我有一个 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
我不明白,因为我用的是内存数据库
1条答案
按热度按时间xam8gpfp1#
然而,问题是,尽管您正在配置h2以将信息存储在内存中,但从spring和spring boot的Angular 来看,您拥有相同的数据库系统、相同的事务、相同的实体。。。总之,与使用h2并将信息存储在文件系统或其他不同的数据库系统上的行为相同。
如果不模拟存储库,spring将尝试创建实际的
UserRepository
并期待所需的依赖项来这样做,比如entityManagerFactory
对你来说。