初始化Mongodb进行Spring Boot测试

时间:2014-12-05 00:19:30

标签: spring-boot spock spring-data-mongodb

我正在构建一个Spring Boot应用程序,该应用程序将Spring数据存储库与MongoDB一起使用。我正在尝试创建一个Spock功能规范来测试我的存储库,但我无法找到初始化Mongo DB以准备测试的适当方法。到目前为止,我尝试了以下内容:

  1. 什么都不做 - 这导致从测试到测试使用相同的数据库,我的测试失败了。
  2. 在测试之前删除数据库 - 这导致索引丢失,我无法测试我的唯一索引。
  3. 以下是删除数据库时的操作:

    @ContextConfiguration(classes = MyApp, loader = SpringApplicationContextLoader)
    @ActiveProfiles('test')
    class UserRepositoryTest extends Specification {
    
        @Shared
        boolean mongoReset = false
    
        @Autowired
        MongoTemplate mongoTemplate
    
        @Autowired
        UserRepository userRepository
    
        void setup() {
            if (!mongoReset) {
                mongoTemplate.getDb().dropDatabase()
                mongoReset = true
            }
        }
    
    }
    

    理想情况下,我希望能够使用类似于JPA存储库提供的data.sql方法。

1 个答案:

答案 0 :(得分:3)

我们通常建议使用存储库来擦除数据库(即调用userRepository.deleteAll())。删除数据库的缺点是擦除在上下文引导时间内可能已创建的所有索引。