如何在我的 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

我猜那都是在交易中