首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用RSpec/RoR测试AJAX请求?

如何使用RSpec/RoR测试AJAX请求?
EN

Stack Overflow用户
提问于 2010-10-20 02:04:32
回答 4查看 23.1K关注 0票数 59

我是RoR的新手,最近开始学习BDD/Rspec来测试我的应用程序。我一直在寻找一种方法来规范AJAX请求,但到目前为止,我还没有找到很多关于这方面的文档。

有人知道怎么做吗?我正在使用rails 2.3.8、rspec 1.3.0和mocha 0.9.8作为我的存根(我也在学习过程中……)

EN

回答 4

Stack Overflow用户

发布于 2010-10-20 02:27:53

如果您正在谈论在您的控制器规范中测试它,那么您通常会调用

get :index

要向索引操作发出HTTP请求,应改为调用

xhr :get, :index

使用GET向索引操作发出XmlHttpRequest (AJAX)请求。

票数 110
EN

Stack Overflow用户

发布于 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
票数 41
EN

Stack Overflow用户

发布于 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
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3971268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档