在测试中,我可以添加任何bean(使用静态嵌套配置类)。但是如何添加spring-data存储库?我不能作为新bean返回,因为我无法实例化它们-它们是接口
@RunWith(SpringRunner.class)
@DataMongoTest
//@SpringBootTest // or this annotation
public class JTest {
@Configuration
static class Config {
static class TestEntity {
String id;
}
interface TestRepository extends ReactiveMongoRepository<TestEntity, String> {}
}
@Autowired Config.TestRepository testRepository;
@Test
public void test() {}
}
运行@DataMongoTest
给了我
原因:java.lang.IllegalStateException:无法检索@EnableAutoConfiguration基本包
运行@SpringBootTest
会给出:
由以下原因引起:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为“ xxx.JTest $ Config $ TestRepository”的合格bean:期望至少有1个有资格作为自动装配候选的bean。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}
如何在测试中添加新存储库?
答案 0 :(得分:2)
默认情况下,Spring不会选择嵌套的接口存储库(并实例化一个bean)。要启用,请参阅:
@RunWith(SpringRunner.class)
@DataMongoTest
@EnableMongoRepositories(considerNestedRepositories = true)
public class JobTest {
@TestConfiguration
static class Config {
static class TestEntity {
String id;
}
....
如果没有其他规定,Spring在内部用new SimpleMongoRepository<T, ID>(..)
注册一个bean。
编辑
刚意识到您正在使用反应式Mongo。因此请改用EnableReactiveMongoRepositories(..)
。