在Rails中测试数据库种子文件的有效性

时间:2018-08-14 17:43:22

标签: ruby-on-rails ruby rspec

随着代码的增长,种子文件可能很快变得无效。我只是遇到一种情况,即开放合并请求具有所有正在运行并通过的测试,但是当我在登台服务器上运行rails db:seed时失败了,因为种子文件没有该特定模型的所有必需字段。 有没有一种方法可以始终测试种子文件的有效性?

可能相关:

  • 我正在使用gitlab CI来运行CI和部署
  • rails版本-5.2
  • rspec版本3

2 个答案:

答案 0 :(得分:1)

您可以在运行rails db:seed(或rspec或它使用的任何拼写形式)的现有任务旁边,定义一个运行rails spec的独立CI任务。

答案 1 :(得分:1)

使用RSpec进行测试,结果发现它实际上已经死了:

require 'rails_helper'
RSpec.describe "db:seed" do
  it "works" do
    expect { Rails.application.load_seed }.to_not raise_error
  end
  it "creates a foo" do
    expect { Rails.application.load_seed }.to change(Foo, :count)
  end
end

由于“播种”实际上只需要一个红宝石文件,因此可以预料到。

Rails.application.load_seedrake db:seed任务(在Rails 5+中为rails db:seed)使用。