Rork引擎测试/假人与Spork,Guard,RSpec?

时间:2012-05-20 16:47:41

标签: ruby-on-rails ruby rspec spork guard

我有一个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。它确实有效,但我有两个问题:

  • 如何让spork重新加载我的lib / my_gem / *文件?我尝试在我的Guardfile中放置像../../ lib / my_gem / ...这样的路径,但它不会观察/重新加载文件。
  • 出于某种原因,rspec忽略了我在spec_helper中的选项,例如“config.filter_run:focus => true”行。我把它们放到了Spork.prefork中。当我使用rspec spec / models / task_spec.rb手动运行rspec时,此设置有效,但当我使用guard / spork时,它被忽略。

3 个答案:

答案 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'