2013-05-24 13 views
5

Mam następujący kod w moim kontrolera, która eksportuje plik csvzawartość testowe pliku w RSpec z respond_to format.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 
... 

i mam następujących w moim specyfikacji

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 jest pusty w tym teście, gdy go sprawdzam. W jaki sposób chciałbym uzyskać plik csv w specyfikacji pobranej po kliknięciu tej czynności w przeglądarce, aby sprawdzić wynik? Uderzyłem kawałek ściany, próbując to rozgryźć.

Dziękujemy za pomoc.

Odpowiedz

-1

Określasz, że format CSV jest obsługiwany, ale nie to, jaka treść powinna być. Możesz teraz wykonać renderowanie tego pliku CSV.

Jeśli masz również normalnego widoku HTML sformatowane dla tych samych danych, to po prostu trzeba

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

zakładając, że masz odpowiednie zmienne instancji ustawień dla widoku HTML wcześniej.

0

Test, który sprawdza, że ​​jest tworzony plik CSV jest następujący, przy założeniu, że działanie kontrolera jest „csv_create_path”

it 'should create a CSV file ' do 
    get csv_create_path 
    response.header['Content-Type'].should include 'text/csv' 
end 
Powiązane problemy