在我的Rails應用程序中,我製作了一個AJAX PUT請求(使用Coffeescript),該請求在我的開發環境中正常工作。當我檢查按鈕,點擊後,會觸發使用Firefox的AJAX請求時,它看起來是這樣的:爲什麼我的AJAX在運行測試時請求dev中的PUT請求,但請求了GET請求?
return $.ajax({
url: url,
type: 'PUT',
data: {
minutes: minutes,
appt_id: appt_id
}
});
然而,當我運行一個集成測試點擊相同的按鈕,我檢查在Firefox按鈕(我停在中間使用byebug測試),AJAX請求是這樣的:
return $.get(url, {
minutes: minutes,
appt_id: appt_id
});
我只是使用GET使用PUT(當我手動測試它,它的工作原理)改變了要求,並測試通過時它使用GET,但在更改爲使用PUT後,測試失敗,出現以下錯誤:
1.2) Failure/Error: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"
ActionController::RoutingError:
No route matches [GET] "/appointments/9998/put_away"
爲什麼測試環境中的AJAX請求從PUT更改爲GET請求,以及如何解決此問題以便我的測試通過?謝謝!
我使用Rails 4.2.0,Ruby 2.2.4p230和RSpec 3.4.4,以及Selenium和Capybara進行測試。
你的代碼是如何改變的?第一個示例代碼與第二個代碼不同!你也可以發佈網絡標籤請求和響應? – dm03514
@ dm03514我使用'$ .ajax替換了'$ .get(url,{分鐘:分鐘,appt_id:appt_id})'',''PUT', data:{minutes:minutes, appt_id:appt_id} })'並將我的路由從'get'send_more_minutes_message''改爲'put'send_more_minutes_message''。 – jackerman09
您是否預先編譯過測試環境中的資產?如果是這樣,它有時可以阻止檢測JS的變化,所以它繼續使用舊版本 –