如果这个问题有点主观,我深表歉意......我正在尝试找出使用 Cucumber 和 Rspec 测试 Rails 3 引擎的最佳方法。为了测试引擎,需要一个 rails 3 应用程序。这是我目前正在做的事情:
通过运行以下命令将 Rails 测试应用程序添加到 gem (myengine) 的根目录:
rails new /myengine/rails_app
/myengine/rails_app/features
像在普通 Rails 应用程序中一样添加 Cucumber需要 Rails 引擎 Gem(使用
:path=>"/myengine"
)/myengine/rails_app/Gemfile
将 spec 添加到 gem 的根目录:
/myengine/spec
包括固定装置,
/myengine/spec/fixtures
我将以下内容添加到我的 cuc env.rb 中:
环境.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)
你觉得这样设置有什么问题吗?测试运行良好,但我有点犹豫是否将这些功能放入测试轨道应用程序中。我最初尝试将功能放在 gem 的根目录中,并在其中创建了测试 rails 应用程序features/support
,但由于某种原因,当我运行测试时我的引擎不会初始化,即使我可以看到应用程序在 cuc 运行时加载其他所有内容。
如果有人正在使用 Rails 引擎并使用 cuc 和 rspec 进行测试,我很想听听您的设置。
* *更新
自从我写了这个问题以来,我稍微改变了我的设置。我决定摆脱引擎根目录下的规范目录。现在,我只需创建一个名为“test_app”的 rails 应用程序,并在该应用程序中设置 cuc 和 rspec,就像我通常在 rails 应用程序中所做的那样。然后我像在上面的步骤 3 中那样包含 gem。由于引擎是一个子应用程序,我想最好像普通的 Rails 应用程序一样对其进行测试。我仍然有兴趣了解是否有人有不同的设置。