我开始制作Rails 3.1引擎,我很难用rspec测试它 .
首先,如果我运行 rails g integration_test whatever
,它会在测试/集成中创建一个常规集成测试,而不是规范/请求(rspec-rails gem已安装并且需要作为gemspec文件中的开发依赖项)
此外,当我运行规范测试时,我得到一个错误,说明与我正在测试的模型相对应的表尚未创建 . 我尝试了 rake engine_name:install:migrations
并从虚拟应用程序中运行 rake db:migrate
,我收到"table already exists"错误 .
一切似乎都断开了,我觉得我在这里遗漏了一些东西,使rspec gem无缝地工作,就像通常使用完整的rails应用程序一样 .
我从这里跟踪了所有的更改http://rubyx.com/2011/03/01/start-your-engines并且我可以通过控制台启动虚拟应用程序来手动测试引擎,如图所示http://railscasts.com/episodes/277-mountable-engines .
有没有办法让rspec成为测试rails 3.1引擎的默认设置?
2 回答
我正在寻找相同的答案,我找到了the combustion gem *,它承诺设置一个完整的环境,以更简单的方式指定你的引擎 . 只需添加
到您的gemspec并运行
在spec目录中重现完整的rails应用程序 .
*我还没试过......
我正在使用带有Rails引擎的RSpec而没有问题 .
我使用以下开关创建了我的插件:-T --full --dummy-path = spec / dummy .
-T
不包括测试/单位--full
表示该插件是引擎--dummy-path
只是为了让我们得不到测试目录(默认为test / dummy) .从那里我使用了“启动引擎”文章中的spec_helper:
对于发电机 . 我将config.generators块添加到我的engine.rb文件中,如下所示:
有了这个,我可以在运行像模型生成器这样的生成器时获得rspec测试 .
至于DB,你的database.yml文件设置正确吗?您是否加载了测试环境,例如
rake db:test:clone
或rake db:migrate RAILS_ENV=test
?我的猜测是RSpec可以设置测试数据库 .