怎么测试ajax get请求,为什么我的AJAX在运行测试时请求dev中的PUT请求,但请求了GET请求?...

在我的Rails应用程序中,我制作了一个AJAX PUT请求(使用Coffeescript),该请求在我的开发环境中正常工作。当我检查按钮,点击后,会触发使用Firefox的AJAX请求时,它看起来是这样的:为什么我的AJAX在运行测试时请求dev中的PUT请求,但请求了GET请求?

return $.ajax({

url: url,

type: 'PUT',

data: {

minutes: minutes,

appt_id: appt_id

}

});

然而,当我运行一个集成测试点击相同的按钮,我检查在Firefox按钮(我停在中间使用byebug测试),AJAX请求是这样的:

return $.get(url, {

minutes: minutes,

appt_id: appt_id

});

我只是使用GET使用PUT(当我手动测试它,它的工作原理)改变了要求,并测试通过时它使用GET,但在更改为使用PUT后,测试失败,出现以下错误:

1.2) Failure/Error: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"

ActionController::RoutingError:

No route matches [GET] "/appointments/9998/put_away"

为什么测试环境中的AJAX请求从PUT更改为GET请求,以及如何解决此问题以便我的测试通过?谢谢!

我使用Rails 4.2.0,Ruby 2.2.4p230和RSpec 3.4.4,以及Selenium和Capybara进行测试。

+0

你的代码是如何改变的?第一个示例代码与第二个代码不同!你也可以发布网络标签请求和响应? –

+0

@ dm03514我使用'$ .ajax替换了'$ .get(url,{分钟:分钟,appt_id:appt_id})'',''PUT', data:{minutes:minutes, appt_id:appt_id} })'并将我的路由从'get'send_more_minutes_message''改为'put'send_more_minutes_message''。 –

+0

您是否预先编译过测试环境中的资产?如果是这样,它有时可以阻止检测JS的变化,所以它继续使用旧版本 –

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值