我正在使用带有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
答案 0 :(得分:1)
我设法通过添加 let!而不是让来使测试工作顺利进行。 this question的答案帮助了我 有关让和让! here的更多信息。
let!(:category) { FactoryGirl.create(:category)}
let!(:activity) do
FactoryGirl.create({
venues: [FactoryGirl.create(:venue)]
})