我是RoR的新手,最近开始学习BDD/Rspec来测试我的应用程序。我一直在寻找一种方法来规范AJAX请求,但到目前为止,我还没有找到很多关于这方面的文档。
有人知道怎么做吗?我正在使用rails 2.3.8、rspec 1.3.0和mocha 0.9.8作为我的存根(我也在学习过程中……)
发布于 2010-10-20 02:27:53
如果您正在谈论在您的控制器规范中测试它,那么您通常会调用
get :index
要向索引操作发出HTTP请求,应改为调用
xhr :get, :index
使用GET向索引操作发出XmlHttpRequest (AJAX)请求。
发布于 2017-06-21 23:15:07
Rails 5/6
从Rails5.0(带有RSpec 3.X)开始,尝试这样设置xhr: true
:
get :index, xhr: true
背景
下面是ActionController::TestCase中的相关代码。设置xhr
标志最终会添加以下标头:
if xhr
@request.set_header "HTTP_X_REQUESTED_WITH", "XMLHttpRequest"
@request.fetch_header("HTTP_ACCEPT") do |k|
@request.set_header k, [Mime[:js], Mime[:html], Mime[:xml], "text/xml", "*/*"].join(", ")
end
end
发布于 2018-02-16 17:23:42
Rails 5和rspec >3.1的语法发生了一些变化(我相信)
对于POST请求:
post :create, xhr: true, params: { polls: { question: 'some' } }
您现在需要显式设置params
对于GET请求:
get :action, xhr: true, params: { id: 10 }
对于rails 4和rspec <= 3.1
xhr post :create, { polls: { question: 'some' } }
GET请求:
xhr get :show, id: 10
https://stackoverflow.com/questions/3971268
复制相似问题