मैं थोड़ा स्टंप हूं। मैं निम्नलिखित एकीकरण परीक्षण है:रुपये और आरएसी के साथ आरईएसटी-एपीआई प्रतिक्रियाओं का परीक्षण :: टेस्ट
require "spec_helper"
describe "/foods", :type => :api do
include Rack::Test::Methods
let(:current_user) { create_user! }
let(:host) { "http://www.example.com" }
before do
login(current_user)
@food = FactoryGirl.create_list(:food, 10, :user => current_user)
end
context "viewing all foods owned by user" do
it "as JSON" do
get "/foods", :format => :json
foods_json = current_user.foods.to_json
last_response.body.should eql(foods_json)
last_response.status.should eql(200)
foods = JSON.parse(response.body)
foods.any? do |f|
f["food"]["user_id"] == current_user.id
end.should be_true
foods.any? do |f|
f["food"]["user_id"] != current_user.id
end.should be_false
end
end
context "creating a food item" do
it "returns successful JSON" do
food_item = FactoryGirl.create(:food, :user => current_user)
post "/foods.json", :food => food_item
food = current_user.foods.find_by_id(food_item["id"])
route = "#{host}/foods/#{food.id}"
last_response.status.should eql(201)
last_response.headers["Location"].should eql(route)
last_response.body.should eql(food.to_json)
end
end
end
मैं आवश्यक रैक जोड़ दिया है :: टेस्ट :: तरीके मुझे last_response
विधि प्राप्त करने के लिए, लेकिन यह सही काम करने के लिए प्रतीत नहीं होता। last_response
हमेशा मेरे पेज sign_in दिखाने के लिए भले ही मैं पहले से ही प्रवेश होने के बाद लगता है।
अगर मैं रैक :: टेस्ट :: तरीके को दूर last_response
दूर चला जाता है और मैं response
बजाय उपयोग कर सकते हैं और मैं वर्तमान प्रतिक्रिया मिल। सब कुछ ठीक काम करता प्रतीत होता है।
यह क्यों है? response
विधि कहां से आ रही है? क्या मैं सत्र से पिछली प्रतिक्रिया प्राप्त करने के लिए response
का उपयोग कर सकता हूं?
मैं इतना है कि मैं मार्गों मिलान कर सकते हैं के लिए
last_response.headers["Location"].should eql(route)
last_response
, या कुछ इसी तरह, उपयोग करने के लिए की जरूरत है। अगर यह इसके लिए नहीं था तो मैं सेट कर दूंगा।
'login' के लिए कोड क्या है - क्या यह एक आरएसपीईसी परिभाषित विधि है या आपने इसे कहीं और परिभाषित किया है? क्या लॉगिन पेज को रीडायरेक्ट को काम करने की आवश्यकता होती है? यदि ऐसा है तो लॉगिन कोड के बाद 'follow_redirect! 'डालें। – iain
आप किस समाधान के साथ आए हैं? मैं [टिकटी] (https://github.com/rails3book/ticketee) उदाहरण के साथ भी काम करता हूं लेकिन फिर भी 'last_response' में मुझे अपेक्षित प्रतिक्रिया नहीं है? इसके अलावा, उत्तरों में से एक को चिह्नित करना न भूलें। – JJD