简单形式关联的Rspec测试

时间:2011-11-23 03:17:20

标签: ruby-on-rails rspec capybara simple-form

我正在尝试在表单上运行请求规范(使用Simple Form构建)。表单包括一些使用关联方法生成的选择框,因此包含模型的数据库值。

当运行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 :(得分:0)

我强烈建议您为测试创建灯具。

这样您就可以手动创建和操作测试所需的记录。它不像使用模拟,存根和双打一样高效或优雅,但它加强了对应用程序和测试的理解。