【问题标题】:Populate dropdown using Capybara 2 with RSpec使用 Capybara 2 和 RSpec 填充下拉列表
【发布时间】:2014-03-17 12:51:41
【问题描述】:

我正在使用带有 Rspec 的 Capybara 编写测试,并且我到达了必须选择下拉选项的步骤。下拉列表包含开发环境中从数据库中检索的类别(对于某些活动)。测试时,它们不再作为选项出现在下拉列表中。

如何在测试环境中填充下拉菜单?

我有以下工厂:

FactoryGirl.define do
  factory :category do
    name { 'art' }
  end
end

FactoryGirl.define do
  factory :activity do
   title       { Faker::Lorem.sentence[0...Activity::MAX_TITLE_LENGTH] }
   description { Faker::Lorem.sentence }

   factory :full_activity do
     categories  { |pa| [ pa.association(:category) ] }
     venues      { [ FactoryGirl.build(:venue, :city => location) ] }
   end   
  end
end

在我的功能测试中有:

require 'spec_helper'

feature "add new activity", js: true do

  let(:category) { FactoryGirl.create(:category)}

  let(:activity) do
    FactoryGirl.create({
        venues: [FactoryGirl.create(:venue)]
    })
  end

  scenario "user fills step 1" do

      visit root_path

      click_on("Add activity")

      expect(page).to have_content("Categories")

      page.select 'art', :from => 'category_dd_id'

      page.find("#save_step_1").click
  end
end

在 /models/activity.rb 中:

has_and_belongs_to_many :categories

在 /models/category.rb:

has_and_belongs_to_many :activities

【问题讨论】:

    标签: ruby-on-rails-3 rspec capybara


    【解决方案1】:

    我设法通过添加 let! 而不是 let 使测试运行良好。 this question 的答案帮助了我。
    关于 letlet! 的更多信息here

    let!(:category) { FactoryGirl.create(:category)}
    
    let!(:activity) do
        FactoryGirl.create({
          venues: [FactoryGirl.create(:venue)]
      })
    

    【讨论】:

      猜你喜欢
      • 2018-02-18
      • 1970-01-01
      • 2012-09-26
      • 2014-12-18
      • 2012-11-07
      • 2016-05-12
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多