我只是把我的脚趾浸入Ruby和Rails中,并试图让我的头脑完成整个BDD的事情.我有一个页面,它将一个AJAX POST回到一个控制器,该控制器有一个名为"sort"的方法,并传递一个像这样的id数组
["song-section-5", "song-section-4", "song-section-6"]
Run Code Online (Sandbox Code Playgroud)
我想为此写一个测试,所以我提出了这样的事情:
test "should sort items" do
xhr :post, :sort
end
Run Code Online (Sandbox Code Playgroud)
但无法弄清楚如何传递数组.有帮助吗?
mon*_*cle 17
来自Rails的源代码
def xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil)
Run Code Online (Sandbox Code Playgroud)
该方法的第三个输入是"参数".这些是发送给您的控制器的参数.
xhr :post, :sort, { :ids => ["song-section-5", "song-section-4", "song-section-6"] }
Run Code Online (Sandbox Code Playgroud)
odl*_*dlp 13
对我来说,使用RSpec 3.6和Rails 5.1,之前的答案失败了:
xhr :post, :index
# => NoMethodError: undefined method `xhr' for #<RSpec::ExampleGroups::XController::Index::AJAXRequest:0x007fd9eaa73778>
Run Code Online (Sandbox Code Playgroud)
而是尝试这样设置xhr: true:
post :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)
| 归档时间: |
|
| 查看次数: |
8386 次 |
| 最近记录: |