Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 为Spring启动测试初始化Mongo DB_Spring Boot_Spock_Spring Data Mongodb - Fatal编程技术网

Spring boot 为Spring启动测试初始化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

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

  • 什么都不做-这导致在测试之间使用相同的数据库,而我的测试在测试之后失败
  • 在测试之前删除数据库-这导致索引丢失,并且我无法测试我的唯一索引
  • 下面是我在删除数据库时所做的:

    @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()
    )。删除数据库的缺点是删除上下文引导期间可能创建的所有索引