2012-03-03 9 views
9

jestem testowania usuwania działania mojego kontrolera zasobów w sposób następujący:Jak testować odpowiedź 204 w RSpec w Railsach?

describe ResourceController do 
    context "DELETE destroy" do 
    before :each do 
     delete :destroy, id: @resource.id 
    end 
    it { should respond_with(:no_content) } 
    end 
end 

oczekuję 204/odpowiedzi bez treści. Jednak ten test kończy się niepowodzeniem, ponieważ odpowiedź zwrócona przez serwer to 406. Odpowiedź jest równa 204, gdy uderzę kontroler bezpośrednio z mojego klienta testu odpoczynku. Strona

Odpowiedz

7

This pokazuje, jak przetestować kod odpowiedzi.

describe ResourceController do 
    context "DELETE destroy" do 
    it "should respond with a 204" 
     delete :destroy, id: @resource.id 
     response.code.should eql(204) 
    end 
    end 
end 
+0

Składnia jest w porządku. Zapomniałem wspomnieć, że używam shoulda. Zastanawiam się, czy niektóre nagłówki muszą być ustawione podczas tworzenia żądania usunięcia. –

+0

Proszę opublikować zawartość kontrolera. – Gazler

+1

Uwaga: W przypadku Rails 4, 'response.code' jest łańcuchem, więc powinieneś użyć' response.code.should eql "204" 'lub' response.response_code.should eql 204'. Zobacz http://api.rubyonrails.org/classes/ActionDispatch/Response.html – Soup

4

Kilka lat minęło ...

Chciałbym tylko zauważyć, że możliwe jest użycie składni expect i zapytań bezpośrednio kod statusu.

describe ResourceController do 
    context "DELETE destroy" do 
    it "should respond with a 204" 
     delete :destroy, id: @resource.id 
     expect(response).to have_http_status(:no_content) 
    end 
    end 
end