【发布时间】:2014-02-14 21:22:07
【问题描述】:
我是 Rspec 和 Factory girl 的新手,我希望我的测试在特定的数据库状态下运行。我知道我可以让工厂女孩创建这些记录,并且在测试运行后对象将被销毁,但是如果我在数据库中有数据会发生什么。
例如:我希望在我通过 Factory Girl 创建的数据库中有 3 条记录时运行测试。但是,我目前在数据库中已经有 1 条模型记录,我不想仅仅为了测试而删除它。将那 1 个模型放在那里会破坏我的测试。
数据库内容
[#<Leaderboard id: 1, score: 500, name: "Trudy">]
leaderboard_spec.rb
require 'spec_helper'
describe Rom::Leaderboard do
describe "poll leaderboard" do
it "should say 'Successful Run' when it returns" do
FactoryGirl.create(:leaderboard, score: 400, name: "Alice")
FactoryGirl.create(:leaderboard, score: 300, name: "Bob")
FactoryGirl.create(:leaderboard, score: 200, name: "John")
Leaderboard.highest_scorer.name.should == "Alice"
end
end
end
现在我的测试将失败,因为它会错误地假设 Trudy 是最高得分者,因为测试在错误的状态下运行。
工厂女孩是否提供从数据库中删除记录然后回滚此删除?类似于它如何在数据库中创建记录并回滚
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 rspec factory-bot