Ruby on rails 如何清理测试数据库,但不是全部,只清理使用RSPEC和Capybara测试生成的数据

Ruby on rails 如何清理测试数据库,但不是全部,只清理使用RSPEC和Capybara测试生成的数据,ruby-on-rails,rspec,rubygems,capybara,database-cleaner,Ruby On Rails,Rspec,Rubygems,Capybara,Database Cleaner,我在rails 5.2.6中有一个应用程序,我正在使用RSPEC和Capybara对其进行测试,为此我有一个测试数据库,其中包含用于执行测试的数据,我正在运行一些测试,这些测试生成存储在该数据库中的数据。我需要的是,在运行测试之后,这些数据不会存储在其中 我使用了gem数据库_cleaner,但是这会清除测试数据库的所有数据,我只想擦除测试生成的数据 my database.yml的一部分: development: <<: *default database: f_deve

我在rails 5.2.6中有一个应用程序,我正在使用RSPEC和Capybara对其进行测试,为此我有一个测试数据库,其中包含用于执行测试的数据,我正在运行一些测试,这些测试生成存储在该数据库中的数据。我需要的是,在运行测试之后,这些数据不会存储在其中

我使用了gem数据库_cleaner,但是这会清除测试数据库的所有数据,我只想擦除测试生成的数据

my database.yml的一部分:

development:
  <<: *default
  database: f_development
  host: localhost
  port: 5432
  username: postgres
  password: postgres

test:
  <<: *default
  database: f_test
  host: localhost
  port: 5432
  username: postgres
  password: postgres
开发:

检查spec/rails\u helper.rb配置部分。 看来你已经准备好了

config.use_transactional_fixtures = false
不执行事务中的每个测试是什么意思,这样数据就留在数据库中

此设置的默认行为为true

你能读懂它的工作原理


另一个可以帮助您的解决方案是:您可以在运行测试之前设置种子数据,如所述

似乎您正在使用相同的数据库进行开发和测试。在database.yml文件中,将
数据库:dev
数据库:test
更改为不同的环境开发和测试。您好!我不是,我的database.yml有:开发:您不应该依赖于测试中任何数据的存在,而是在测试过程中生成所有必要的数据。这将消除您当前的顾虑,并使您的测试保持隔离和自我维持。如果我设置种子数据,它将在测试之前创建数据,因此清除我的数据库不会有问题,对吗?@Andrea Elia。您可以通过rails_helper.rb配置RSpec,以便在运行测试之前对数据进行种子设定,例如:
RSpec.configure do | config | config.before(:suite)do rails.application.load_seed end