私はcapybaraを使用してcollection_select要素から値を選択することをテストしようとしていますが、何らかの理由で、rspecを実行しているときにcollection_selectに入力するデータがありませんが、railsアプリを実行しているときです。
例:
htmlの定義
<%= form_for(@notification) do |f| %>
<%= f.label :device, "Select a Device to notify:" %>
<%= f.collection_select :device_id, Device.all, :id, :device_guid, prompt: true %>
<% end %>
rspecの定義
describe "NotificationPages" do
subject { page }
let(:device) { FactoryGirl.create(:device) }
let(:notification) { FactoryGirl.create(:notification, device: device) }
describe "new notification" do
before { visit new_notification_path }
let(:submit) { "Create Notification" }
describe "with valid information" do
before do
select(device.device_guid, from: 'notification_device_id')
fill_in "Message", with: "I am notifying you."
end
it "should create a notification" do
expect { click_button submit }.to change(Notification, :count).by(1)
end
end
end
end
テストを実行すると、次のエラーメッセージが表示されます。
Capybara::ElementNotFound: cannot select option, no option with text 'device_guid' in select box 'notification_device_id'
collection_selectのDevice.all
呼び出しは、テスト中に何も返さないようです。私が間違っていることについて何か考えはありますか?
ありがとう、ペリー