如何测试 Rails 中控制器操作的响应是否为文件?(机架测试或水豚)
我应该使用单元测试来做到这一点吗?
场景很简单:我必须测试从数据库中导出的用户是否与操作生成的 .csv 中包含的用户相同。
如何测试 Rails 中控制器操作的响应是否为文件?(机架测试或水豚)
我应该使用单元测试来做到这一点吗?
场景很简单:我必须测试从数据库中导出的用户是否与操作生成的 .csv 中包含的用户相同。
您不需要机架测试或 Capybara 来执行此操作。默认的测试基础架构就是您所需要的。只需检查 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