2012-03-03 10 views
9

मैं इस प्रकार मेरी संसाधन नियंत्रक की हटाएं क्रिया का परीक्षण कर रहा हूँ:रेल में आरएसपीसी में 204 प्रतिक्रिया के लिए मैं कैसे परीक्षण करूं?

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

मैं एक 204/no-सामग्री प्रतिक्रिया की उम्मीद है। हालांकि, यह परीक्षण विफल हो रहा है क्योंकि सर्वर द्वारा लौटाई गई प्रतिक्रिया 406 है। प्रतिक्रिया 204 है जब मैंने सीधे अपने रेस्ट टेस्ट क्लाइंट से नियंत्रक को मारा।

उत्तर

7

This पृष्ठ दिखाता है कि प्रतिक्रिया कोड का परीक्षण कैसे करें।

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

वाक्यविन्यास ठीक है। मैं उल्लेख करना भूल गया कि मैं कंधे का उपयोग कर रहा हूं। मुझे आश्चर्य है कि हटाए गए अनुरोध करते समय कुछ शीर्षकों को सेट करने की आवश्यकता है या नहीं। –

+0

कृपया अपने कंट्रोलर की सामग्री पोस्ट करें। – Gazler

+1

नोट: कम से कम रेल 4 में, प्रतिक्रिया.code' एक स्ट्रिंग है, इसलिए आपको 'respond.code.should eql" 204 "' या 'response.response_code.should eql 204' का उपयोग करना चाहिए। Http://api.rubyonrails.org/classes/ActionDispatch/Response.html देखें – Soup

4

कुछेक साल बीत चुके हैं ...

मैं बस ध्यान दें कि यह संभव है expect सिंटैक्स का उपयोग करने और सीधे स्थिति कोड क्वेरी करने के लिए करना चाहते हैं।

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 
संबंधित मुद्दे