我有一个Rails宝石,我正在用RSpec测试。 我的gem的代码在lib / my_gem中,当我创建gem时,Rails为我生成了一个测试应用程序,在test / dummy文件夹中。我在test / dummy / spec / models / task_spec.rb中有我的规格。我可以使用rspec命令运行这些规范。
现在我想用Spork和Guard进行测试。我按照RailsCasts http://railscasts.com/episodes/285-spork在我的测试/虚拟应用程序中安装spork。它确实有效,但我有两个问题:
答案 0 :(得分:1)
通常在开发环境中,config.cache_classes
设置为true
。当您使用spork时,您应该禁用此选项,有关详细信息,请参阅:./config/environments/test.rb
文件。
而是config.filter_run :focus => true
尝试使用RSpec的标签:https://www.relishapp.com/rspec/rspec-core/v/2-4/docs/command-line/tag-option
答案 1 :(得分:1)
我终于能够解决问题了。关键是从根目录运行测试而不是从test / dummy运行。 如果您克隆我的gem https://github.com/mrbrdo/has_moderated,您可以看到我的设置 我认为关键是在Guardfile(注意测试/虚拟的路径),Rakefile(规范任务)和两个spec_helper.rb文件中(一个在spec /和一个在test / dummy / spec中)。如果您发现其他需要的话,请随时发表评论。
答案 2 :(得分:0)
Spring现在有关于在开发Rails引擎时如何使用的文档。 https://github.com/rails/spring#application-root
只需指定在哪里找到测试应用的根目录:
Spring.application_root = './test/dummy'