为什么RSpec在从ruby内部运行时运行规范两次并重新加载spec文件
我正在尝试在现有的
ruby运行时中使用RSpec,并在每次文件更改时运行规范.这是因为J
Ruby和JVM启动时间.为了在每次运行时消除这种情况,我想启动ruby一次,然后只重新加载更改的文件并运行规范.我正在使用防护(具有不同的扩展)和监视器,但似乎都遇到了下面描述的问题.
我将问题解决了RSpec本身.问题是,当通过RSpec :: Core :: Runner.run运行RSpec几次时它工作正常,直到使用load重新加载spec文件.然后RSpecs开始运行两次规格. 以下是示例输出: 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 有没有办法告诉RSpec在从现有ruby运行时内部运行时清除其后续运行之间的上下文?我还提出了这个问题作为RSpec Core项目的#826问题. 解决方法
总结这里的答案,以便从“未答复”过滤器中删除此问题…
根据RJHunter的观察,GitHub RSpec核心项目的解释已在此处记录: https://github.com/rspec/rspec-core/issues/826#issuecomment-15089030 对于后代(如果以上链接死亡),以下是详细信息:
上述要点包含: require 'rspec' spec_file = 'spec/sample_spec.rb' File.open(spec_file,'w') { |file| file.write 'describe { specify { expect(true).to eq false } }' } 1.upto(5) do |i| puts "Running spec from within ruby runtime" ::RSpec::Core::Runner.run([spec_file],STDERR,STDOUT) #rewriting the spec file File.open(spec_file,'w') { |file| file.write "describe { specify { expect(#{i}).to eq false } }" } end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |