2

Railsのコントローラーアクションの応答がファイルであるかどうかをテストするにはどうすればよいですか?(ラックテストまたはカピバラ)

それを行うために単体テストを使用する必要がありますか?

シナリオは単純です。データベースからエクスポートされたユーザーが、アクションから生成された.csvに含まれているものと同じであるかどうかをテストする必要があります。

4

1 に答える 1

20

これを行うのに、ラックテストやカピバラは必要ありません。必要なのはデフォルトのテストインフラストラクチャだけです。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
于 2013-02-04T22:27:01.017 に答える