0
我正在爲我的應用程序編寫請求規格,並且遇到多個請求的stubbing問題。RSpec stubbing只適用於第一次請求,不適用於後續請求
我的測試:
it "adding a text response element to the campaign" do
TextResponsesController.any_instance.stub(:current_user).and_return(@user)
get new_campaign_text_response_path(@campaign)
expect(response).to render_template(:new)
post "/campaigns/#{@campaign.id}/text_responses", { :text_response => {:name => "test", :campaign_id => @campaign.id, :keyword => @campaign.keyword, :message => "testing", :clip_id => Content::DEFAULT[1], :sender_name => "tester", :start_date => Time.now, :end_date => Time.now + 86400} }
expect(@campaign.components.first.class).to equal TextResponse
end
在這個例子中,我捻熄:CURRENT_USER方法在控制器的任何實例,因此它可以模擬登錄的用戶,否則就只是重定向到登錄頁面。
問題是,通過在每次請求後輸出響應主體,我發現第一個獲取請求已成功完成,但發佈請求因爲重定向到登錄頁面而失敗。
我試過的東西:
1)評論取出請求。這允許發佈請求成功(不再重定向到登錄頁面)。
2)將兩個請求放在單獨的「it」塊中,並在每個塊中定義存根。沒有什麼區別,第一個請求有效,但第二個請求重定向。
我非常困惑,因爲當只有一個請求時存根顯然工作,但對於任何後續請求都失敗。我一整天都在試圖解決這個問題,並且我終於不知所措。
任何幫助將不勝感激。
如果您在同一個塊中執行兩個'get'請求,它會失敗嗎? –
是的,如果我做了兩個獲取請求,第二個獲得重定向。我在控制器中輸出了current_user,看起來第二個請求總是導致current_user爲零,這意味着stubbing不能正常工作......或者我不理解它是如何工作的?我輸出了正在調用current_user的類名,它是兩個請求的正確控制器。 –