42

expectrspec-2.11の新しい構文では、どのように暗黙的な使用が可能subjectですか? 以下のように、明示的に を参照するよりも良い方法はありsubjectますか?

describe User do
  it 'is valid' do
    expect(subject).to be_valid    # <<< can `subject` be implicit?
  end
end
4

3 に答える 3

64

構文を無効にするように RSpec を構成する場合、すべてのオブジェクトに追加するshould必要がないため、古いワンライナー構文を引き続き使用できます。should

describe User do
  it { should be_valid }
end

別のワンライナー構文について簡単に説明しましたが、それは不要であり、混乱を招く可能性があると感じたため、使用しないことにしました。ただし、読み方を好む場合は、これを自分で簡単に追加できます。

RSpec.configure do |c|
  c.alias_example_to :expect_it
end

RSpec::Core::MemoizedHelpers.module_eval do
  alias to should
  alias to_not should_not
end

これを配置すると、これを次のように書くことができます。

describe User do
  expect_it { to be_valid }
end
于 2012-09-04T14:55:32.843 に答える
12

暗黙的ではありませんが、新しい名前付きサブジェクト構文を使用できます。

describe User do
  subject(:author) { User.new }

  it 'is valid' do
    expect(author).to be_valid
  end
end
于 2012-09-04T09:30:08.323 に答える