在同一进程中多次在ruby内运行rspec

时间:2014-05-15 21:28:30

标签: ruby ruby-on-rails-4 rspec rspec2 rspec-rails

我正在创建一个测试自动化工具,它在ruby中运行rspec测试,而不是从命令行运行。

我运行这样的测试运行并给我一个输出哈希值,传递/失败等。

config = RSpec.configuration

json_formatter = RSpec::Core::Formatters::JsonFormatter.new(config.out)
reporter =  RSpec::Core::Reporter.new(json_formatter)
config.instance_variable_set(:@reporter, reporter)

RSpec::Core::Runner.run(["#{Rails.root}/spec/test1_spec.rb"])

puts json_formatter.output_hash 

一切都很棒,直到我再次运行它并得到错误

> undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_7:0x007ff3d343d978>

如何在重新运行之前重新加载/确保所有spec_helper和文件都已加载?

感谢 瑞克

3 个答案:

答案 0 :(得分:0)

添加

require 'spec_helper'

到每个spec文件的顶部。

答案 1 :(得分:0)

我遇到了同样的问题,事实证明它只能用一行代码修复:

require 'capybara'
include Capybara::DSL # Add this line right after requiring capybara

来源:http://codedecoder.wordpress.com/2013/01/10/undefined-method-visit-for-rspec-capybara/

答案 2 :(得分:0)

我遇到了类似的问题,并且必须在运行之间执行RSpec#reset以确保清理所有内容。

http://www.rubydoc.info/github/rspec/rspec-core/RSpec#reset-class_method