如何在我的 rspec 测试之前输入一些数据
How to put in some data before my rspec test
我正在我的控制器上测试创建方法。新实体的创建需要数据库中已经存在另一个实体。所以我需要外键才能插入任何东西。我试过了
job = Job.create(:client_id => 1, :title => "Title", :date => Time.now,
:number_of_workers => 10, :venue => "Somewhere")
let(:valid_attributes) {
{
worker_id: 1,
job_id: 1,
salary: 120.0
}
}
let(:valid_session) { {} }
describe "GET index" do
it "assigns all hours ad @hours" do
hour = Hour.create! valid_attributes
get :index, {}, valid_session
expect(assigns(:hours)).to eq([hour])
end
end
这行得通,但它打破了另一个测试,因为我的工作 table 现在已填充。我怎样才能只在这个测试中创建这个工作? (我看了 database_cleaner gem 但我想避免那样)
我尝试将作业的创建移动到每个组中,但是变量无法访问。
呸!使用实例变量并将它们放在 before 循环中,如下所示:
before(:each) do
http_login
@job = Job.create(:client_id => 1, :title => "Title", :date => Time.now, :number_of_workers => 10, :venue => "Somewhere")
end
我猜那都是在交易中
我正在我的控制器上测试创建方法。新实体的创建需要数据库中已经存在另一个实体。所以我需要外键才能插入任何东西。我试过了
job = Job.create(:client_id => 1, :title => "Title", :date => Time.now,
:number_of_workers => 10, :venue => "Somewhere")
let(:valid_attributes) {
{
worker_id: 1,
job_id: 1,
salary: 120.0
}
}
let(:valid_session) { {} }
describe "GET index" do
it "assigns all hours ad @hours" do
hour = Hour.create! valid_attributes
get :index, {}, valid_session
expect(assigns(:hours)).to eq([hour])
end
end
这行得通,但它打破了另一个测试,因为我的工作 table 现在已填充。我怎样才能只在这个测试中创建这个工作? (我看了 database_cleaner gem 但我想避免那样)
我尝试将作业的创建移动到每个组中,但是变量无法访问。
呸!使用实例变量并将它们放在 before 循环中,如下所示:
before(:each) do
http_login
@job = Job.create(:client_id => 1, :title => "Title", :date => Time.now, :number_of_workers => 10, :venue => "Somewhere")
end
我猜那都是在交易中