如何在不同文件中使用rspec共享示例?

时间:2013-05-10 17:11:49

标签: ruby testing rspec

我希望在不同的spec文件中重用此shared_examples块。我想将它提取到一个单独的文件中,并传入该对象,因此它并不总是用户。我试过的两件事都失败了,有可能吗?

describe User  do
  before  { @user = build_stubbed(:user) }
  subject { @user }

  shared_examples 'a required value' do |key| # trivial example, I know
    it "can't be nil" do
      @user.send("#{key}=", nil)
      @user.should_not be_valid
    end
  end

  describe 'name'
    it_behaves_like 'a required value', :name
  end
end

1 个答案:

答案 0 :(得分:2)

只需require另一个文件。 shared_examples在顶级工作,因此一旦定义,它们始终可用;所以要小心命名冲突。

很多RSpec用户会将共享示例放在spec/support/shared_examples/FILENAME.rb中。然后在spec/spec_helper.rb中:

Dir["./spec/support/**/*.rb"].sort.each {|f| require f}

或者在Rails项目上

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

它列在共享示例文档的'CONVENTIONS'部分中。

相关问题