DataMongoTest负载拦截器

时间:2019-10-08 19:56:24

标签: spring mongodb spring-data-mongodb

我有一个执行得很好的DataMongoTest,但是它没有加载已配置的拦截器

@Configuration
public class EntityInterceptors extends AbstractMongoEventListener<Entity> { ... }

@DataMongoTest
@ExtendWith(SpringExtension.class)
@ActiveProfiles({"default", "test"})
public class MongoTest {

  @Autowired
  private DataRepository repo;
  ... 
}

存储库已正确连接,可以在测试中访问。它不是嵌入式数据库,而是在测试之前已清理的外部测试数据库。

如果我在应用程序环境中执行此操作,则拦截器将全部加载。但是它们不会加载到测试类中。如何在不将其用作SpringBootTest的情况下将该类添加到执行上下文中,在该上下文中还加载了所有其他不需要的东西?

1 个答案:

答案 0 :(得分:0)

DataMongoTest不足以为此运行:

@ExtendWith(SpringExtension.class)
// Add Config and all dependent Interceptors
@SpringBootTest(classes = {
    InterceptorConfig.class,
    TopEntityInterceptor.class,
    CascadedEntityInterceptor.class
})
// MONGO INIT
@ImportAutoConfiguration
@AutoConfigurationPackage
@AutoConfigureDataMongo
@ActiveProfiles({"default", "test"})
class InterceptorTest {
  @Autowired TopEnitityRepository repo;
}

您现在可以使用存储库并检查拦截器在持久保存后是否完成了工作,并且拦截器是否也级联。