【发布时间】:2013-04-09 06:42:26
【问题描述】:
我发现当我通过 capybara-webkit 执行 ajax DELETE 请求时,它们没有向控制器发送数据参数。但是,当我使用 selenium 运行测试套件时,确实会发送数据参数(并且测试通过)。我的代码如下所示:
$(document).on 'click', 'a.delete_contact', ->
if confirm "Are you sure you want to delete this contact?"
id = $('a.delete_contact').data('id')
name = $('a.delete_contact').data('name')
$.ajax '/contacts',
type: 'DELETE'
dataType: 'html'
data: {'id' : id}
success: ->
$("li[data-cid='#{id}']").remove()
removeInitial(_.last(name.split(" "))[0])
show_notice("Contact successfully destroyed.", 'notice')
window.contactSelection.pop()
refreshSelectionView()
return false
知道为什么这在 capybara-webkit 中失败了吗?
【问题讨论】:
-
我不确定这个问题的解决方法,但似乎 capybara-webkit 没有模仿 http 动词的能力。 See the discussion here.
-
@JasonKim 我相信讨论是关于允许从您的 Ruby 代码向服务器发出任意请求。这是“浏览器”(由 capybara-webkit 模拟)不通过请求正文发送的问题,除非 HTTP 方法是 PUT 或 POST。虽然我正在尝试使用 PATCH 方法,但我遇到了同样的问题。
标签: javascript ruby-on-rails ajax selenium capybara-webkit