Тест Rspec для простых ассоциаций форм - PullRequest
3 голосов
/ 23 ноября 2011

Я пытаюсь запустить спецификацию запроса на форме (построенной с помощью простой формы).Форма включает в себя несколько полей выбора, которые генерируются с использованием метода связи, и, следовательно, значения базы данных для модели.

При запуске save_and_open_page это не похоже на значения выбора в раскрывающихся списках.

Я посмотрел на Mocking и Stubbing, но это для меня ново, и я все еще немного запутался в концепции, выходящей за рамки базового использования.

Есть ли способ сгенерировать коллекцию для поля выбора, чтобы Capybara моглазабрать?

Я использую Rails 3.1, Simple Form, Capybara и FactoryGirl.

Мой код ...

challenge_spec

describe "New Challenges" do

  before(:all) do
    %w["Under 13", "13 - 16"].each do |item|
      FactoryGirl.create(:age, :name => item)
     end
  end

  it "should redirect to resources after submission" do

    login_valid_user

    visit new_challenge_path

    @challenge = Factory.build(:challenge)

    fill_in "challenge_name", :with => @challenge.name
    fill_in "challenge_description", :with => @challenge.description
    fill_in "challenge_description", :with => @challenge.description
    select "30 mins", :from => "challenge_timescale"
    save_and_open_page
    select 1, :from => "challenge_age_id"
    select @challenge.category, :from => "challenge_category_id"

    click_button "save_button"

  end
end

Контроллер

def new
  @challenge = Challenge.new

  respond_to do |format|
    format.html # new.html.haml
    format.json { render json: @challenge }
  end
end

Форма элемента

<%= f.association :age, :prompt => "Please select..." %>

Модели

Задача

class Challenge < ActiveRecord::Base
  belongs_to :age
end

Возраст

class Age < ActiveRecord::Base
  has_many :challenges
end

1 Ответ

0 голосов
/ 09 января 2013

Я настоятельно рекомендую создавать приспособления для ваших тестов.

Таким образом, вы можете вручную создавать и обрабатывать записи, необходимые для тестов. Он не так эффективен и элегантен, как использование макетов, заглушек и дубликатов, но усиливает понимание приложения и тестов.

...