ruby 如何在不同的文件中使用Rspec shared_examples?

cunj1qz1  于 2023-03-08  发布在  Ruby
关注(0)|答案(1)|浏览(102)

我想在不同的spec文件中重用这个shared_examples块。我想把它解压缩到一个单独的文件中,并传入对象,这样它就不总是user了。我尝试的两件事都失败了,有可能吗?

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
pu3pd22g

pu3pd22g1#

只有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'部分中。

相关问题