-1

私は次のステップ定義を持っています:

When /^I upload it$/ do

end

これはファイルのアップロードに関連しています。カピバラのvisitメソッドは、GET onlyメソッドであることがわかります。POSTリクエストを実行する唯一の方法は、実装によるものです。

visit "/files/new"
within('#upload-form') do
  attach_file('File', @files_path+'/file.txt')
  click_button('Upload')
end

これは、ファイル/新しいテンプレート内のHTMLタグとフォームタグに依存しているため、それほど強力なテストではないようです。

これを処理するためのより良い方法はありますか、それともこれで大丈夫ですか?私はこのようなことを念頭に置いていました:

post files_new_path {file:=>'a_file_on_the_system.txt'}

しかし、キュウリのテストは統合テストです..では、このレベルでテストを作成するための「公式」または最良の方法はどれですか?

4

1 に答える 1

1

カピバラのコードは人間の行動を模倣しています。人間が「POST」することは期待できませんが、「visit」、「click_button」などだけが期待できます。

あなたが言及した構文は、コントローラーテストによりよく適合しますが、Capybaraとの統合テストには適合しません。

私の意見では、統合テストの最良のスタイルは、機械ではなく人間のように考え、行動することです。

于 2013-02-18T18:25:09.710 に答える