如何用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