3

人々は次の状況にどのように対処していますか: 画像を取得するフォームがあります。画像が承認されたかどうかを確認するにはどうすればよいですか? それとも、これはこのレベルのテストで検証する必要がないものですか?

scenario "add facebook like gate and save as draft" do
  path =  "#{Rails.root}/app/assets/images/like_gate.jpg"

  visit root_url
  click_link I18n.t(:create_a_new_promotion)
  fill_in I18n.t(:title), with: "My promotion"
  click_button I18n.t(:continue)

  expect(page).to have_text(I18n.t(:promotion_details))
  expect(page).to have_text("My promotion")

  fill_in I18n.t(:like_gate_copy), with: "Like our page to enter the contest!"
  attach_file I18n.t(:upload_lg_image), path
  click_button I18n.t(:save_as_draft)

  expect(page).to have_text(I18n.t(:promotion_successfully_saved))
end

attach_file実際に成功したことを確認する特定の方法はありますか? また、一般的にファイルのアップロードをどのようにテストしていますか? リクエストスペック、コントローラースペック、モデルスペックは?すべてのテストで RSpec と Capybara に固執したいと思います。

ありがとう

4

1 に答える 1

3

はカピバラのメソッドなのでattach_file、テストしないでください。

代わりに、有効/無効なアップロードによってシステムの状態がどのように変化するかを検討してください。たとえば、ユーザー アバターをアップロードする場合は、アップロードした画像の ID へのポインターがユーザー モデルにあることを確認します。さらに高いレベルのテストを行っている場合は、アップロードされた画像 (URL) がページ上でユーザーが期待する場所でユーザーに表示されることを確認します。

つまり、画像のアップロードをテストするのではなく、その結果をテストしてください。

expect(page).to have_selector("img[src=#{path}]")

于 2013-10-31T22:58:54.847 に答える