如何检查响应是否是文件?

时间:2013-02-04 20:40:22

标签: ruby-on-rails tdd testunit minitest rack-test

如何测试Rails中控制器操作的响应是否为文件? (机架测试或水豚)

我应该使用单元测试吗?

场景很简单:我必须测试数据库中导出的用户是否与动作生成的.csv中包含的用户相同。

1 个答案:

答案 0 :(得分:15)

您不需要机架测试或Capybara来执行此操作。您只需要默认的测试基础架构。只需检查内容类型是否为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