Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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
Ruby Rails5:有没有办法对开发数据库运行一组测试?_Ruby_Ruby On Rails 5.2 - Fatal编程技术网

Ruby Rails5:有没有办法对开发数据库运行一组测试?

Ruby Rails5:有没有办法对开发数据库运行一组测试?,ruby,ruby-on-rails-5.2,Ruby,Ruby On Rails 5.2,我想对开发数据库运行一组测试。我的seeds.rb文件从CSV填充数据库,我希望确保数据以我期望的方式存储在数据库中。我不想对开发数据库运行所有测试,只想运行一组特定的测试 我创建了一个集成测试。我原以为我可以在#设置中切换环境,但看起来Rails.env='development'没有效果 require 'test_helper' class DbTest < ActionDispatch::IntegrationTest def setup Rails.env = 'd

我想对开发数据库运行一组测试。我的
seeds.rb
文件从CSV填充数据库,我希望确保数据以我期望的方式存储在数据库中。我不想对开发数据库运行所有测试,只想运行一组特定的测试

我创建了一个集成测试。我原以为我可以在
#设置中切换环境,但看起来
Rails.env='development'
没有效果

require 'test_helper'

class DbTest < ActionDispatch::IntegrationTest
  def setup
    Rails.env = 'development'
  end

  def test_total_settlements
    ...
需要“测试助手”
类DbTest

是否可以在不同的环境中运行测试?如果是这样的话,这是如何做到的?

我建议创建一个类,将信息植入一个可配置的数据库,然后对该类运行测试。这样,您就不需要对一个可操作的数据库运行测试并按您想要的次数运行该测试,而不必在种子失败的情况下手动修改您的开发数据库(如删除遗留记录)


一旦你有了这个类,你就可以在你的Rakefile中添加一个任务并使用你的类:)

在我看来,最简单的解决方案就是给你的测试数据库种子。
在需要种子数据进行测试之前,可以调用
Rails.application.load\u seed

为什么不给测试数据库种子并检查它是如何填充的呢?这个选项的问题是我给数据库种子植入了大量数据,这会大大降低测试的速度。为数据库设定种子大约需要5分钟。一种可能的解决方案是为您的测试环境创建一个单独的种子文件,以便只引入测试所需的样本数据。种子银行的创业板让这一切变得非常轻松。