2013-02-04 3 views
2

레일스에서 ​​컨트롤러 동작의 응답이 파일인지 어떻게 테스트 할 수 있습니까? (랙 테스트 또는 카피 바라)응답이 파일인지 확인하는 방법은 무엇입니까?

단위 테스트를 사용해야합니까?

시나리오는 간단합니다. 데이터베이스의 내 보낸 사용자가 작업에서 생성 된 .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 
관련 문제