随着代码的增长,种子文件可能很快变得无效。我只是遇到一种情况,即开放合并请求具有所有正在运行并通过的测试,但是当我在登台服务器上运行rails db:seed
时失败了,因为种子文件没有该特定模型的所有必需字段。
有没有一种方法可以始终测试种子文件的有效性?
可能相关:
答案 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_seed
由rake db:seed
任务(在Rails 5+中为rails db:seed
)使用。