2013-05-24 36 views
5

format.csv respond_toからRSpecの中のファイルの内容を、私は私のコントローラに次のコードを持ってテストcsvファイルをエクスポート

... 
    def export 
    @filename = 'users.csv' 
    @output_encoding = 'UTF-8' 
    @users = User.active_users #not the actual scope but this only returns active 
    respond_to do |format| 
     format.csv 
    end 
    end 
... 

そして私は

it "should only return active users" 
    get :export, :format => :csv 
    # i want to check that my mocked users_controller#export is only returning the active users and not the inactive ones 
end 

response.body私の仕様で、次のしています私はそれをチェックすると、このテストでは空です。このアクションがブラウザでヒットしたときにダウンロードされた仕様のcsvファイルを取得して、結果を確認できるようにするにはどうすればよいですか?私はこれを理解しようとする壁にちょっと打ちました。

ご協力いただきありがとうございます。

答えて

-1

CSV形式はサポートされていますが、内容はサポートされていません。実際にそのCSVファイルをレンダリングするには、

respond_to do |format| 
    format.csv do 
    render text: File.read(@filename) 
    end 
end 

とすることができます。

あなたも同じデータに対する通常のHTML形式のビューを持っている場合、あなたは単にあなたが前にHTMLビューのセットアップ適切なインスタンス変数を持っていると仮定し

respond_to do |format| 
    format.html 
    format.csv do 
    render text: File.read(@filename) 
    end 
end 

を持っているでしょう。

0

コントローラアクションが「csv_create_path」

it 'should create a CSV file ' do 
    get csv_create_path 
    response.header['Content-Type'].should include 'text/csv' 
end 
であると仮定すると、次のように作成されたCSVファイルであることを確認テスト
関連する問題