当我通过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中失败的任何想法?
答案 0 :(得分:0)
显然QtWebKit不支持具有DELETE请求的实体主体。
https://github.com/thoughtbot/capybara-webkit/issues/427#issuecomment-12200262
capybara-webkit开发人员推荐这种解决方法:“[发送]一个POST请求,其中一个参数将请求标识为DELETE .Rails使用这种机制来解决跨浏览器的类似问题。”