加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用capybara模拟rspec请求规范中的JSONP

发布时间:2020-12-17 03:14:32 所属栏目:百科 来源:网络整理
导读:我正在使用Recurly.js集成我的rails应用程序. 在我从服务器端应用程序发出重复请求之前,因此我能够将所有与优秀VCR gem(https://github.com/myronmarston/vcr)的集成存根,但Recurly.js使用JSONP从javascript代码直接向服务发出请求. 问题是:如何在集成测试
我正在使用Recurly.js集成我的rails应用程序.

在我从服务器端应用程序发出重复请求之前,因此我能够将所有与优秀VCR gem(https://github.com/myronmarston/vcr)的集成存根,但Recurly.js使用JSONP从javascript代码直接向服务发出请求.

问题是:如何在集成测试中模拟这些jsonp调用?

目前我正在使用rspec capybara phantomjs驱动程序(https://github.com/jonleighton/poltergeist)

解决方法

我想出的唯一方法是即时的javascript补丁.至于Poltergeist gem有一个在测试浏览器中执行javascript的方法,你可以应用以下补丁来将Recurly.js变成测试模式:

# The original 'save' function performs JSONP request to Recurly.
# A token is borrowed during the real API interaction.
page.driver.execute_script("""
  Recurly.Subscription.save = function (options) {
    Recurly.postResult('/subscription',{ token: 'afc58c4895354255a422cc0405a045b0' },options);
  }
""")

只需制作一个capybara宏,给它一个像’stub_recurly_js’这样的花哨名称,并在每次提交Recurly.js表单之前调用它.

如果你想深入挖掘,这里也是原始帖子的链接:http://pieoneers.tumblr.com/post/32406386853/test-recurlyjs-in-ruby-using-rspec-capybara-phantomjs

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读