2013-02-04 17 views
2

如何測試Rails中控制器操作的響應是否爲文件? (機架測試或水豚)如何檢查響應是否爲文件?

我應該使用單元測試來做到這一點嗎?

該方案很簡單:我必須測試從數據庫中導出的用戶是否與操作生成的.csv中包含的相同。

回答

13

你不需要機架測試或水豚來做到這一點。默認的測試基礎設施是您所需要的。簡單地檢查內容類型是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