Spring boot 为Spring启动测试初始化Mongo DB
我正在构建一个Spring引导应用程序,它将Spring数据存储库与MongoDB结合使用。我正试图创建一个Spock功能规范来测试我的存储库,但我无法找到初始化Mongo DB以准备测试的适当方法。到目前为止,我尝试了以下方法:Spring boot 为Spring启动测试初始化Mongo DB,spring-boot,spock,spring-data-mongodb,Spring Boot,Spock,Spring Data Mongodb,我正在构建一个Spring引导应用程序,它将Spring数据存储库与MongoDB结合使用。我正试图创建一个Spock功能规范来测试我的存储库,但我无法找到初始化Mongo DB以准备测试的适当方法。到目前为止,我尝试了以下方法: 什么都不做-这导致在测试之间使用相同的数据库,而我的测试在测试之后失败 在测试之前删除数据库-这导致索引丢失,并且我无法测试我的唯一索引 下面是我在删除数据库时所做的: @ContextConfiguration(classes = MyApp, loader = S
@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方法。我们通常建议使用存储库来擦除数据库(即调用
userRepository.deleteAll()
)。删除数据库的缺点是删除上下文引导期间可能创建的所有索引。我们通常建议使用存储库来删除数据库(即调用userRepository.deleteAll()
)。删除数据库的缺点是删除上下文引导期间可能创建的所有索引。我们通常建议使用存储库来删除数据库(即调用userRepository.deleteAll()
)。删除数据库的缺点是删除上下文引导期间可能创建的所有索引。我们通常建议使用存储库来删除数据库(即调用userRepository.deleteAll()
)。删除数据库的缺点是删除上下文引导期间可能创建的所有索引