如何用RSpec / RoRtestingAJAX请求?

我对RoR相当陌生,最近开始学习BDD / Rspec来testing我的应用程序。 我一直在寻找一种方法来规范一个AJAX请求,但到目前为止我还没有find很多关于这方面的文档。

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

如果您正在讨论在您通常所称的控制器规格内进行testing

get :index 

要对索引操作发出HTTP请求,您可以调用

 xhr :get, :index 

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

Rails 5

由于Rails 5.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