我试图在现有的 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提出。