我正在将Rails应用程序与Recurly.js集成。
在我从服务器端应用程序请求递归递归之前,因此我能够将所有集成与出色的VCR gem(https://github.com/myronmarston/vcr)进行 stub ,但是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
关于ruby-on-rails - 如何使用capybara模拟rspec请求规范中的JSONP调用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11151921/