我正在编写一个让用户在线进行测试的应用。该测试有2组18个问题,这些问题在视图中随机化。我正在尝试编写测试,以确保每个部分都能得到正确的18个问题。我想创建一个工厂,它将击中数据库并加载一系列随机问题。知道怎么做吗?我可以对文本进行硬编码,但实际上我想通过不重复seed.rb和factory.rb中的问题来测试种子数据并干掉我的代码。
这就是我所做的硬编码
Factory.define :test do |test|
test.association :user
end
Factory.define :question do |question|
question.phrase "2+2"
question.answer "4"
question.association :test
end
然后,在我的测试中,我可以写出类似的内容:
@test = Factory(:test, :user => @user)
@question = Factory(:question, :test => @test)
任何想法如何做到这一点?
谢谢!
答案 0 :(得分:3)
如果在spec / factories.rb的顶部添加以下行怎么样:
load(Rails.root.join("db", "seeds.rb"))
如果您使用的是Rails 3.1,则可以使用以下行代码。
Rails.application.load_seed
我从Can I somehow execute my db/seeds.rb file from my rails app?
得到了这个答案