use*_*826 54 testing ajax rspec ruby-on-rails mocha.js
我对RoR很新,最近开始学习BDD/Rspec来测试我的应用程序.我一直在寻找一种规范AJAX请求的方法,但到目前为止我还没有找到很多文档.
有人知道怎么做吗?我正在使用rails 2.3.8,rspec 1.3.0和mocha 0.9.8作为我的存根(我也正在学习......)
Rob*_*her 108
如果你正在谈论在你通常打电话的控制器规格内测试它
get :index
Run Code Online (Sandbox Code Playgroud)
要对索引操作发出HTTP请求,您可以调用
xhr :get, :index
Run Code Online (Sandbox Code Playgroud)
使用GET对索引操作发出XmlHttpRequest(AJAX)请求.
odl*_*dlp 28
从Rails 5.0(使用RSpec 3.X)开始,尝试这样设置xhr: true:
get :index, xhr: true
Run Code Online (Sandbox Code Playgroud)
这是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
Run Code Online (Sandbox Code Playgroud)
Rails 5和rspec> 3.1的语法有所变化(我相信)
对于POST请求:
post :create, xhr: true, params: { polls: { question: 'some' } }
Run Code Online (Sandbox Code Playgroud)
您现在需要显式设置 params
for GET requests:
get :action, xhr: true, params: { id: 10 }
Run Code Online (Sandbox Code Playgroud)
for rails 4 and rspec <= 3.1
xhr post :create, { polls: { question: 'some' } }
Run Code Online (Sandbox Code Playgroud)
GET requests:
xhr get :show, id: 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19270 次 |
| 最近记录: |