tldr; 当我在使用Engine的测试应用程序中运行rake任务时,似乎没有遵守Engine依赖项.我必须通过在测试应用程序的Gemfile中指定依赖项来(-D)RY
我使用Jeweler创建了一个Rails引擎作为宝石.它依赖于我在Rakefile中指定的Devise:
gem.add_runtime_dependency 'devise', '~> 1.1.3'
Run Code Online (Sandbox Code Playgroud)
在我的测试应用程序中,我将引擎依赖项添加到Gemfile,并bundle install显示已选择并安装了Devise.但是,如果我运行初始化rake db:migrate,则会抛出错误:
uninitialized constant Devise
<snip>config/initializers/devise.rb:3
Run Code Online (Sandbox Code Playgroud)
如果我手动将Devise依赖项添加到测试应用程序的Gemfile中,它就可以工作.我可能错过了一些显而易见的事情,但是在这个阶段,测试应用程序似乎选择并正确安装了依赖项,但由于某种原因,初始化程序代码会失败,除非在测试应用程序的Gemfile中再次列出依赖项.
我在一个新的Rails 3项目中为Capybara换了Webrat.我在这里浏览了Tim Riley的精彩帖子(http://openmonkey.com/articles/2010/04/javascript-testing-with-cucumber-capybara),并克隆了他的存储库,执行了示例黄瓜功能,并看到了浏览器窗口打开.所以整个Cucumber,Capybara,Selenium堆栈似乎在这种情况下运行良好.
但是,如果我创建一个新的Rails 3项目,运行设置一个类似的示例项目,并使用@javascript注释一个场景,浏览器窗口不会触发,而Cucumber场景只是失败了,通常Command failed with status (1) event(在失败的情况下)或者未决的步骤,Cucumber通过设计触发CI工具的好处).
除了Capybara提供的@javascript功能外,所有其他功能都可以正常工作.
我错过了一些非常明显的东西吗?BDD新手是否有办法更深入地研究问题(堆栈跟踪只显示Cucumber失败时的标准rake错误).