使用RspectestingRails 3.1可挂载引擎

我开始制作一个Rails 3.1引擎,而且我很难用rspec来testing它。

首先,如果我运行rails g integration_test whatever它在testing/集成中创build常规集成testing而不是spec / requests(rspec-rails gem作为gemspec文件中的开发依赖项安装和需要)

此外,当我运行一个规范testing时,我得到一个错误,说与我正在testing的模型对应的表尚未创build。 我尝试了rake engine_name:install:migrations并运行rake db:migrate从虚拟应用程序内部rake db:migrate ,并得到“表已存在”错误。

一切似乎都是断开的,我觉得我错过了一些东西,使得rspec gem无缝地工作,就像通常使用完整的rails应用程序一样。

我跟着从这里http://rubyx.com/2011/03/01/start-your-engines的所有更改,我可以通过控制台启动虚拟应用程序手动testing引擎,如下所示http:// railscasts。 com / episodes / 277-mountable-engines 。

有没有办法让RSpectestingrails 3.1引擎的默认值?

我正在使用RSpec与Rails引擎没有问题。

我使用以下开关创build了我的插件:-T –full –dummy-path = spec / dummy。

  • -T不包括testing/单元
  • --full表示该插件是一个引擎
  • --dummy-path就是这样,我们没有得到一个testing目录(默认是test / dummy)。

从那里我用“开始你的引擎”文章中的spec_helper:

 # Configure Rails Envinronment ENV["RAILS_ENV"] = "test" require File.expand_path("../dummy/config/environment.rb", __FILE__) require 'rspec/rails' ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../') # Requires supporting ruby files with custom matchers and macros, etc, # in spec/support/ and its subdirectories. Dir[File.join(ENGINE_RAILS_ROOT, "spec/support/**/*.rb")].each {|f| require f } RSpec.configure do |config| config.use_transactional_fixtures = true end 

对于发电机。 我添加一个config.generators块到我的engine.rb文件,如下所示:

 module MyEngine class Engine < Rails::Engine config.generators do |g| g.test_framework :rspec, :view_specs => false end end end 

有了这个,我可以在运行像模型生成器这样的生成器时获得rspectesting。

至于DB,你的database.yml文件是否设置正确? 你加载了testing环境,例如rake db:test:clonerake db:migrate RAILS_ENV=test ? 我的猜测是RSpec无法看到你的表,因为没有设置testing数据库。

我正在寻找相同的答案,我发现了燃烧的gem ,它承诺build立一个完整的环境,以更简单的方式来引导你的发动机。 只需添加

 gem.add_development_dependency 'combustion', '~> 0.3.1' 

到你的gemspec并运行

 bundle exec combust 

在您的spec目录中重现一个完整的rails应用程序。

*我还没有尝试过