3

我有一个正在使用 RSpec 测试的 Rails gem。我的 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/* 文件?我尝试将 ../../lib/my_gem/... 之类的路径放在我的 Guardfile 中,但它不会监视/重新加载文件。
  • 出于某种原因,rspec 忽略了我在 spec_helper 中的选项,例如“config.filter_run :focus => true”行。我确实将这些正确地放入了 Spork.prefork。当我使用 rspec spec/models/task_spec.rb 手动运行 rspec 时,此设置有效,但当我使用 guard/spork 时,它被忽略了。
4

3 回答 3

1

通常在开发环境config.cache_classes中设置为true. 当您使用 spork 时,您应该禁用此选项,有关详细信息,请参阅:./config/environments/test.rbfile.

而是config.filter_run :focus => true尝试使用 RSpec 的标签:https ://www.relishapp.com/rspec/rspec-core/v/2-4/docs/command-line/tag-option

于 2012-05-21T22:10:37.283 回答
1

我终于能够解决这个问题。关键是从根目录而不是从 test/dummy 运行测试。如果您克隆我的 gem https://github.com/mrbrdo/has_moderated ,您可以看到我的设置rb 文件(一个在 spec/ 中,一个在 test/dummy/spec 中)。如果您发现需要其他内容,请随时发表评论。

于 2012-10-31T17:21:59.313 回答
0

Spring 现在有关于在开发 Rails 引擎时如何使用的文档。https://github.com/rails/spring#application-root

只需指定在哪里可以找到测试应用程序的根目录:

Spring.application_root = './test/dummy'
于 2015-01-13T18:11:03.393 回答