【发布时间】:2013-03-10 12:07:39
【问题描述】:
我正在尝试在现有的 ruby 运行时中使用 RSpec,并在每次文件更改时运行规范。这是因为 JRuby 和 JVM 启动时间。为了在每次运行时消除这种情况,我想启动一次 ruby,然后只重新加载更改的文件并运行规范。我正在使用guard(带有不同的扩展)和watchr,但似乎都遇到了下面描述的问题。
我将问题归结为 RSpec 本身。问题是,当通过RSpec::Core::Runner.run 多次运行 RSpec 时,它工作正常,直到使用load 重新加载规范文件。然后 RSpecs 开始运行规范两次。
我已经创建了显示这个问题的示例项目:https://github.com/mostr/rspec_double_run_issue
以下是示例输出:
ruby run_spec_in_loop.rb
Running spec from within ruby runtime
.
Finished in 0.00047 seconds
1 example, 0 failures
loading spec file via 'load' as if it was changed and we wanted changes to be picked up
Running spec from within ruby runtime
..
Finished in 0.001 seconds
2 examples, 0 failures
当从现有的 ruby 运行时运行时,有没有办法告诉 RSpec 在后续运行之间清除其上下文?我也将此作为 RSpec Core 项目的问题 #826 提出。
【问题讨论】:
-
您似乎找到了对此问题的解释 [在 StackOverflow 之外][github.com/rspec/rspec-core/issues/826#issuecomment-15089030].您能否将其提交为答案并将其标记为已接受?这样这个问题就不会在“未回答”中徘徊:-)
-
@RJHunter 或 MichalOstruszka - 如果您想将解决方案概括为您自己的答案,我将删除我的答案。 (请参阅meta.stackexchange.com/questions/90263/… 详细说明为什么这会有所帮助。)谢谢!