Элемент капибары не найден
У меня есть диагностическая спецификация, и я полагаю, что есть некоторое несоответствие в моем использовании языка между спецификацией и файлами просмотра. Однако я не смог решить проблему. Тест заключается в следующем
it "updates a diagnostic report" do
diagnostic_info = FG.create(:diagnostic_info)
diagnostic_info.save!
visit edit_admin_diagnostic_path(diagnostic_info)
fill_in 'diagnostic_info_notes', with: "test notes"
click_button "Save"
page.should have_content("Saved")
page.should have_content("test notes")
конец
вид
.field
= label_tag :notes
= f.text_field "notes"
= submit_tag @diagnostic.data["Save"], method: :put, data: { confirm: "Are you sure?" }
и провал
1) /admin/diagnostics updates a diagnostic report
Failure/Error: click_button "Save"
Capybara::ElementNotFound:
Unable to find button "Save"
Я пытался изменить синтаксис в файле представления так, чтобы тег отправки был вместо этого кнопкой. Это потому, что я думал, что проблема заключается в использовании тега, а не кнопки. Однако я не смог сделать это с синтаксисом haml успешно.
1 ответ
Решение
В Rails встроена поддержка локализации и интернационализации. Нет необходимости кататься самостоятельно.
# app/views/diagnostics/edit.haml.erb
.field
= label_tag :notes
= f.text_field "notes"
= submit_tag I18n.t('.save'), method: :put, data: { confirm: "Are you sure?" }
Переводы хранятся в файлах YAML, расположенных в config/locales
,
# config/locales/en.yml
en:
diagnostics:
edit:
save: 'Save'
Вы также можете использовать свои переводы в своих спецификациях:
it "updates a diagnostic report" do
diagnostic_info = FG.create(:diagnostic_info)
diagnostic_info.save!
visit edit_admin_diagnostic_path(diagnostic_info)
fill_in 'diagnostic_info_notes', with: "test notes"
click_button I18n.t('diagnostics.edit.save') # Note that we need full path
page.should have_content(I18n.t('diagnostics.edit.save'))
page.should have_content("test notes")
end