2013-03-27 23 views
8

我想在谷歌应用脚​​本上做BDD。我明白,原则上我应该能够使用黄瓜,水豚和机械化的组合来在非轨道外部站点上执行BDD。在这种情况下,我正在测试我创建的Google App脚本。如何获得黄瓜/水豚/机械化工作对外部non-rails网站

我已经在这个项目中得到了完整的代码至今:

https://github.com/tansaku/GoogleAppScriptBDD

不过我目前停留在此错误:

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

我知道,我不想使用机架,我一直在搜索论坛和堆栈溢出,到目前为止我最好的猜测是这样的在我的黄瓜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

但我想利用水豚,因为我测试的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

但是我真的想了解如何只是把现成的东西,并且我希望能够使用机械化,而不是上面提到的博客文章中描述的webkit,因为我现在对机械化有了更好的理解。

无论如何,这里有一个最佳实践,或者我只是继续试验替代品吗?

什么有点郁闷的是,水豚说明操作:https://github.com/jnicklas/capybara 说:

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

Capybara.app = MyRackApp

但产生不同的错误“未初始化常量对象:: MyRackApp(NameError)”,我不知道MyRackApp应该是什么,或者在哪里可以找到(我一直在使用ruby的一般问题: - /),我应该通过黄瓜或水豚来源找出MyRackApp是什么?

无论如何,以为我会记录所有这一切 - 任何建议非常感谢。我很想能够BDD我的谷歌应用程序的脚本...

回答

10

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:

水豚的README wasupdated为这个问题的结果。

由于您想要针对外部应用程序运行测试,因此应该设置Capybara.app_host而不是Capybara.app


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

我建议你使用内置的硒,poltergeistcapybara-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 
+0

非常感谢 - 这让我感觉很好 - 现在我在使用硒,这可能是更好的,因为它贯穿浏览器,使我能够顺利地处理Google登录 - 但我将它带入一个新问题:-(http://stackoverflow.com/questions/15681615/how-to-use-capybara-has-text将不得不放弃TDD一段时间,我认为... – 2013-03-28 12:19:18

7

从的Jeroen van Dijk的on this Google group message,只是将您的Capybara.app设置为评估为true的内容。即

Capybara.app = "make sure this isn't nil" 

只要Capybara.run_server设置为false,它永远不会尝试启动应用程序。它对我来说迄今为止工作。

+0

拯救了我的生命:) – 2014-01-31 14:43:03