Rspec 水豚/恶灵和脑树测试

Rspec 水豚/恶灵和脑树测试,rspec,phantomjs,braintree,poltergeist,Rspec,Phantomjs,Braintree,Poltergeist,在一次功能测试中,我使用Rspec、Capybara和Poltergeist测试我的Braintree沙箱支付时遇到了错误。我已经将它设置为完全像人类在开发中所做的那样(输入付款信息并单击提交)。它在开发中运行良好。但是,当我运行我的规范时,当它加载时,我会在付款页面上看到一个javascript错误: Capybara::Poltergeist::JavascriptError: One or more errors were raised in the Javascript code

在一次功能测试中,我使用Rspec、Capybara和Poltergeist测试我的Braintree沙箱支付时遇到了错误。我已经将它设置为完全像人类在开发中所做的那样(输入付款信息并单击提交)。它在开发中运行良好。但是,当我运行我的规范时,当它加载时,我会在付款页面上看到一个javascript错误:

 Capybara::Poltergeist::JavascriptError:
   One or more errors were raised in the Javascript code on the page. If you don't care about these errors, you can ignore them by setting js_errors: false in your Poltergeist configuration (see documentation for details).

   [object Object]
   [object Object]
       at https://js.braintreegateway.com/js/braintree-2.24.0.js:9484 in fallbackError
 # /usr/local/bundle/gems/poltergeist-1.10.0/lib/capybara/poltergeist/browser.rb:365:in `command'
 # /usr/local/bundle/gems/poltergeist-1.10.0/lib/capybara/poltergeist/browser.rb:181:in `click'
 # /usr/local/bundle/gems/poltergeist-1.10.0/lib/capybara/poltergeist/node.rb:17:in `command'
 # /usr/local/bundle/gems/poltergeist-1.10.0/lib/capybara/poltergeist/node.rb:131:in `click'

有没有人遇到过类似的问题,或者知道为什么Braintree的js在测试(无头浏览器)时会抛出这个错误,而它在开发中运行良好?

通过查看前面提到的行,Braintree-2.24.0.js:9484,你可以看到Braintree.js正在通过控制台输出错误。错误,因此Poltergeist会正确地通知你js错误。这取决于你在Poltergeist上使用的PhantomJS的哪个版本,它最多相当于5年前的Safari版本,所以最重要的是braintree JS不再兼容,或者需要一两个polyfill才能正常工作。您需要调试并尝试弄清楚正在记录的[object]到底是什么。一种选择是切换到selenium进行测试,并查看错误是否仍然存在。

通过查看前面提到的行braintree-2.24.0.js:9484,可以看到braintree.js正在通过控制台输出错误。错误,因此Poltergeist正确地通知您js错误。这取决于你在Poltergeist上使用的PhantomJS的哪个版本,它最多相当于5年前的Safari版本,所以最重要的是braintree JS不再兼容,或者需要一两个polyfill才能正常工作。您需要调试并尝试弄清楚正在记录的[object]到底是什么。一种选择是切换到selenium进行测试,并查看错误是否仍然存在。

可能重复的Thank Thomas!你的评论为我指出了正确的方向——我没有使用selenium(在docker中运行测试,不想设置所有这些),而是尝试了Braintree的js插件的旧版本,并且成功了。最新版本(2.24.0)肯定已经破坏了对PhantomJS的支持,而2.0.0仍然可以工作(至少我正在使用的FakeBraintree gem也是如此)。再次感谢!谢谢你,托马斯!你的评论为我指出了正确的方向——我没有使用selenium(在docker中运行测试,不想设置所有这些),而是尝试了Braintree的js插件的旧版本,并且成功了。最新版本(2.24.0)肯定已经破坏了对PhantomJS的支持,而2.0.0仍然可以工作(至少我正在使用的FakeBraintree gem也是如此)。再次感谢!