joh*_*ley 19 ruby-on-rails rails-engines ruby-on-rails-3
如果这个问题有点主观,我道歉...我正在试图找出用黄瓜和Rspec测试Rails 3引擎的最佳方法.为了测试发动机,需要使用导轨3 app.这是我目前正在做的事情:
通过运行以下命令将rails测试应用添加到gem(myengine)的根目录: rails new /myengine/rails_app
/myengine/rails_app/features
像在普通的Rails应用程序中一样添加Cucumber
需要Rails Engine Gem(使用:path=>"/myengine"
)in/myengine/rails_app/Gemfile
将spec添加到gem的根目录: /myengine/spec
包括夹具,/myengine/spec/fixtures
我将以下内容添加到我的cuc env.rb中:
env.rb:
Fixtures.reset_cache
fixtures_folder = File.join(Rails.root, 'spec', 'fixtures')
fixtures = Dir[File.join(fixtures_folder, '*.yml')].map {|f| File.basename(f, '.yml') }
Fixtures.create_fixtures(fixtures_folder, fixtures)
Run Code Online (Sandbox Code Playgroud)
你看到这样设置有什么问题吗?测试运行正常,但我有点犹豫要把功能放在测试轨应用程序中.我最初尝试将这些功能放在gem的根目录中,并且我在里面创建了测试rails应用程序features/support
,但由于某些原因,当我运行测试时我的引擎不会初始化,即使我可以看到应用程序在cuc运行时加载其他所有内容.
如果有人正在使用Rails Engines并使用cuc和rspec进行测试,我将有兴趣听听您的设置.
**更新
自从我写这个问题以来,我改变了我的设置.我决定摆脱引擎根目录下的spec目录.现在我只创建一个名为"test_app"的rails应用程序,并在该应用程序中设置cuc和rspec,就像我通常在rails应用程序中所做的那样.然后我像上面步骤#3中那样包含宝石.由于引擎是一个子应用程序,我想它最好测试它就像一个普通的rails应用程序.如果有人有不同的设置,我仍然有兴趣听到.
Rails 3.1(将)为引擎生成一个非常好的支架.我建议使用RVM创建一个名为edge的新gemset并切换到它:
rvm gemset create edge
rvm use @edge
Run Code Online (Sandbox Code Playgroud)
然后安装边缘导轨:
git clone git://github.com/rails/rails.git
cd rails
rake install
Run Code Online (Sandbox Code Playgroud)
从那里,您可以关注Piotr Sarnacki的可安装应用教程,替换以下呼叫:
bundle exec ./bin/rails plugin new ../blog --edge --mountable
Run Code Online (Sandbox Code Playgroud)
简单地说:
rails plugin new blog --mountable --full
Run Code Online (Sandbox Code Playgroud)
可安装选项使应用程序可安装,而完整选项使其成为内置测试的引擎.为了测试引擎,这个生成器生成一个包含一个小Rails应用程序的test
被调用文件夹dummy
.你可以看到它是如何加载的test/test_helper.rb
.
然后由您来按摩数据以执行它需要的工作.我建议将黄瓜文件从标准复制rails g cucumber:install
到项目中然后搞乱它直到它工作.我之前做过一次,所以我知道这是可能的,但我现在找不到代码.
让我知道你怎么去.
归档时间: |
|
查看次数: |
5006 次 |
最近记录: |