2012-03-03 35 views
9

Tôi đang thử nghiệm các hành động xóa của bộ điều khiển tài nguyên của tôi như sau:Làm cách nào để kiểm tra phản hồi 204 trong RSpec trong Rails?

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

Tôi mong đợi một 204/phản ứng không có nội dung. Tuy nhiên, thử nghiệm này không thành công vì phản hồi được trả về bởi máy chủ là 406. Câu trả lời là 204 khi tôi nhấn trực tiếp bộ điều khiển từ ứng dụng Rest test của tôi.

Trả lời

7

This trang hiển thị cách kiểm tra mã phản hồi.

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

cú pháp là tốt. Tôi quên đề cập đến rằng tôi đang sử dụng shoulda. Tôi tự hỏi nếu một số tiêu đề cần phải được đặt khi thực hiện yêu cầu xóa. –

+0

Vui lòng đăng nội dung của bộ điều khiển của bạn. – Gazler

+1

Lưu ý: Trong Rails 4 ít nhất, 'response.code' là một chuỗi, vì vậy bạn nên sử dụng' response.code.should eql "204" 'hoặc' response.response_code.should eql 204'. Xem http://api.rubyonrails.org/classes/ActionDispatch/Response.html – Soup

4

Một vài năm đã trôi qua ...

Tôi chỉ muốn lưu ý rằng nó có thể sử dụng cú pháp expect và để truy vấn mã trạng thái trực tiếp.

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 
Các vấn đề liên quan