2

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
4

1 に答える 1

4

ちょうど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」セクションに記載されています。

于 2013-05-10T17:35:44.860 に答える