gpt4 book ai didi

google-apps-script - 如何让 Cucumber/Capybara/Mechanize 对抗外部非 Rails 站点

转载 作者:行者123 更新时间:2023-12-04 05:24:56 25 4
gpt4 key购买 nike

我正在尝试在 Google App Script 上执行 BDD。我知道原则上我应该能够使用 Cucumber、Capybara 和 Mechanize 的某种组合在非 Rails 外部站点上执行 BDD。在这种情况下,我正在尝试测试我创建的 Google App Script。

到目前为止,我已经在这个项目中获得了完整的代码:

https://github.com/tansaku/GoogleAppScriptBDD

但是我目前陷入此错误:

rack-test requires a rack application, but none was given (ArgumentError)

我知道我不想使用机架,我一直在搜索论坛和堆栈溢出,到目前为止,我最好的猜测是在我的 cucumber env 文件中是这样的:
require 'capybara/cucumber'
Capybara.run_server=false
Capybara.current_driver = :mechanize
Capybara.app_host = 'https://script.google.com/macros/s/AKfycbytA2xBsaQ0_FSJXNkPVXQekBnWD4hXPOaCjCT00wo/dev'

这个 SO 帖子是相关的:

How to use Cucumber to test non-Ruby, non-Rack API's

但我想使用 Capybara,因为我正在测试 HTML 界面。此处描述了另一种选择:

http://blogs.kent.ac.uk/webdev/2012/08/02/using-capybara-webkit-with-cucumber-without-rails-or-rack/

我一直在关注这里的讨论:

https://groups.google.com/group/cukes/browse_thread/thread/297163800eaf2968

但是我真的很想了解如何关闭 Rack 的东西,我希望使用 mechanize 而不是上面提到的博客文章中描述的 webkit,因为我现在更了解 mechanize。

无论如何,这里有最佳实践,还是我只是继续尝试替代方案?

让人抓狂的是这里的 capybara 指令: https://github.com/jnicklas/capybara
比如说:

If you are not using Rails, set Capybara.app to your rack app:

Capybara.app = MyRackApp



但这会产生一个不同的错误“未初始化的常量 Object::MyRackApp (NameError)”,我不确定 MyRackApp 应该是什么,或者在哪里可以找到(我在使用 ruby​​ 时遇到的一般问题:-/)我应该正在通过 cucumber 或 capybara 源来找出 MyRackApp 是什么?

无论如何,我想我会在这里记录所有这些 - 非常感谢任何建议。我希望能够 BDD 我的谷歌应用脚​​本......

最佳答案

If you are not using Rails, set Capybara.app to your rack app:



它的意思是:

If the application that you are testing is a Rack app, but not Rails, set Capybara.app to your Rack app:



Capybara 的自述文件 was updated作为这个问题的结果。

当你想对外部应用程序运行测试时,你应该设置 Capybara.app_host而不是 Capybara.app .

我没用过 capybara-mechanize但我认为它可能不是用于测试外部非机架应用程序的最佳驱动程序。 Mechanize 继承自 Racktest,Racktest 用于测试具有 Rack 接口(interface)(主要是 Rails)的应用程序。如果你的应用没有 Rack 接口(interface),那么 capybara-mechanize 可能不是最佳选择。

我推荐你使用内置的 selenium, poltergeist , capybara-webkitterminus

你的代码也可以用 Capybara.configure 写得更好一些。 :
Capybara.configure do |config|
config.run_server = false
config.default_driver = :selenium
config.app_host = 'https://www.google.com' # change url
end

关于google-apps-script - 如何让 Cucumber/Capybara/Mechanize 对抗外部非 Rails 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15665106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com