मेरे पास कुछ नियंत्रक परीक्षण हैं जो विफल होते रहते हैं लेकिन मुझे नहीं पता कि क्यों। नियंत्रक update
क्रिया:
def update
respond_to do |format|
if @tag_category.update(tag_category_params)
format.html { redirect_to company_tags_url, notice: 'Tag category was successfully updated.' }
else
format.html { render :edit }
end
end
end
और संबंधित परीक्षण:
test "should update tag_category" do
patch company_tag_category_url(@tag_category), params: { ... }
assert_redirected_to company_tags_url
end
परीक्षण विफल रहता है (अन्य नियंत्रक में भी यही समस्या:
FAIL["test_should_update_tag_category", #<Minitest::Reporters::Suite:0x00007f973befd100 @name="TagCategoriesControllerTest">, 62.38744100002805]
test_should_update_tag_category#TagCategoriesControllerTest (62.39s)
Expected response to be a <3XX: redirect>, but was a <200: OK>
test/controllers/tag_categories_controller_test.rb:44:in `block in <class:TagCategoriesControllerTest>'
मेरी create
क्रिया में ठीक वैसा ही पुनर्निर्देशन तर्क है लेकिन परीक्षण इस प्रकार है:
test "should create tag_category" do
assert_difference('TagCategory.count') do
post company_tag_categories_url, params: { ... }
end
assert_redirected_to company_tags_url
end
ऐसा लगता है कि मुझे यहां कुछ स्पष्ट याद आ रहा है। मैंने कोशिश की . जोर पैच रिटर्न 200 देख रहा है न कि रीडायरेक्ट जो निम्नानुसार है।
इनाम के लिए अद्यतन करें
इसे अन्य परीक्षणों में खोजना - यह ठीक काम करता है (दोनों ब्राउज़र में रीडायरेक्ट करते हैं और लॉग में रीडायरेक्ट देख सकते हैं):
नियंत्रक:
# PATCH/PUT /wbs/1
def update
authorize @wbs
if @wbs.update(wbs_params)
redirect_to @wbs, notice: 'Work breakdown structure was successfully updated.'
else
render :edit
end
end
परीक्षण:
test "should update work_breakdown_structure" do
patch work_breakdown_structure_url(@work_breakdown_structure), params: { work_breakdown_structure: { description: @work_breakdown_structure.description } }
assert_redirected_to work_breakdown_structure_url(@work_breakdown_structure)
end
यह विफल रहता है:
नियंत्रक:
# PATCH/PUT /wells/1
def update
authorize @well
if @well.update(well_params)
redirect_to @well, notice: 'Well was successfully updated.'
else
render :edit
end
end
परीक्षण:
test "should update well" do
patch well_url(@well), params: { well: { description: @well.description } }
assert_redirected_to well_url(@well)
end
1 उत्तर
आपकी नियंत्रक विधि के अंदर, आपके पास एक नियंत्रण प्रवाह होता है जो जांचता है कि @tag_category
इंस्टेंस सफलतापूर्वक अपडेट किया गया था या नहीं। अगर ऐसा है, तो यह company_tags_url
पर रीडायरेक्ट करता है। यदि ऐसा नहीं है, तो यह :edit
दृश्य प्रस्तुत करता है।
मेरा अनुमान है कि मॉडल अपडेट नहीं हो रहा है और नियंत्रक else
ब्लॉक के तहत शर्त के साथ प्रतिक्रिया दे रहा है (render
निष्पादित करते समय रेल 200 के साथ प्रतिक्रिया देगा)।
संपादन दृश्य प्रस्तुत करने के बजाय, उपयोगकर्ता को edit_company_tag_path(@tag_category)
पर पुनर्निर्देशित करने का प्रयास करें, और यदि ऐसा है तो आपका परीक्षण विफल नहीं होगा क्योंकि यह 3XX प्रतिक्रिया की अपेक्षा कर रहा था, बल्कि इसलिए कि इसे गलत पृष्ठ पर पुनर्निर्देशित किया गया था।
संबंधित सवाल
नए सवाल
ruby-on-rails
रूबी ऑन रेल्स रूबी में लिखा गया एक ओपन सोर्स फुल-स्टैक वेब एप्लिकेशन फ्रेमवर्क है। यह लोकप्रिय एमवीसी फ्रेमवर्क मॉडल का अनुसरण करता है और इसे "कॉन्फिगरेशन ओवर कॉन्फिगरेशन" अप्रोच डेवलपमेंट के दृष्टिकोण के लिए जाना जाता है।