5

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 ファイルを取得するにはどうすればよいですか? 私はこれを理解しようとして少し壁にぶつかりました。

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

4

2 に答える 2

0

コントローラーのアクションが「csv_create_path」にあると仮定して、CSV ファイルが作成されていることを確認するテストは次のとおりです。

it 'should create a CSV file ' do
    get csv_create_path
    response.header['Content-Type'].should include 'text/csv'
end
于 2015-10-31T04:33:30.510 に答える
-1

CSV形式がサポートされていることを指定しますが、コンテンツがどうあるべきかは指定しません。あなたができる

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

そのCSVファイルを実際にレンダリングします。

同じデータに対して通常の HTML 形式のビューもある場合は、次のようになります。

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

以前に HTML ビューに適切なインスタンス変数を設定したと仮定します。

于 2013-10-09T14:12:35.927 に答える