Railsのコントローラーアクションの応答がファイルであるかどうかをテストするにはどうすればよいですか?(ラックテストまたはカピバラ)
それを行うために単体テストを使用する必要がありますか?
シナリオは単純です。データベースからエクスポートされたユーザーが、アクションから生成された.csvに含まれているものと同じであるかどうかをテストする必要があります。
Railsのコントローラーアクションの応答がファイルであるかどうかをテストするにはどうすればよいですか?(ラックテストまたはカピバラ)
それを行うために単体テストを使用する必要がありますか?
シナリオは単純です。データベースからエクスポートされたユーザーが、アクションから生成された.csvに含まれているものと同じであるかどうかをテストする必要があります。
これを行うのに、ラックテストやカピバラは必要ありません。必要なのはデフォルトのテストインフラストラクチャだけです。Content-TypeがCSVであることを確認するだけです。
test "returns a CSV file" do
get :index, format: :csv
assert_response :success
assert_equal "text/csv", response.content_type
end
さらに一歩進めたい場合は、返されたCSVを解析して有効であることを確認し、返された値をテストできます。
test "returns a valid CSV file and data" do
get :index, format: :csv
assert_response :success
assert_equal "text/csv", response.content_type
csv = CSV.parse response.body # Let raise if invalid CSV
assert csv
assert_equal 6, csv.size
assert_equal "Joe Smith", csv[3][4]
end