Как вставить некоторые данные до моего теста rspec - PullRequest
0 голосов
/ 03 февраля 2019

Я тестирую метод создания на моем контроллере.Создание нового объекта требует, чтобы другой объект уже существовал в базе данных.Поэтому мне нужен внешний ключ, прежде чем я смогу вставить что-нибудь.Я попытался

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

Это работает, но это нарушает другой тест, так как моя таблица заданий теперь заполнена.Как я могу создать эту работу только в этом тесте?(Я посмотрел на gem database_cleaner, но мне нравится избегать этого)

Я попытался перенести создание задания в для каждой группы, но тогда переменная недоступна.

1 Ответ

0 голосов
/ 03 февраля 2019

Doh!используйте переменные экземпляра и поместите их в цикл before следующим образом:

before(:each) do
    http_login

    @job = Job.create(:client_id => 1, :title => "Title", :date => Time.now, :number_of_workers => 10, :venue => "Somewhere")
  end

Я полагаю, что все это в транзакции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...