Rspec-2.11の新しいexpect
構文では、暗黙のsubject
をどのように使用できますか?以下のように、subject
を明示的に参照するよりも良い方法はありますか?
describe User do
it 'is valid' do
expect(subject).to be_valid # <<< can `subject` be implicit?
end
end
should
構文を無効にするようにRSpecを構成する場合、すべてのオブジェクトにshould
を追加する必要がないため、古い1行構文を使用できます。
describe User do
it { should be_valid }
end
簡単に説明します 代替の1行の構文ですが、不要であり、混乱を招く可能性があるため、これに反対する決定をしました。ただし、読み方がお好みであれば、自分で簡単に追加できます。
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
Rspec 3.0ではis_expected
説明どおり ここ 。
describe Array do
describe "when first created" do
# Rather than:
# it "should be empty" do
# subject.should be_empty
# end
it { should be_empty }
# or
it { is_expected.to be_empty }
end
end
暗黙的ではありませんが、新しい名前付きサブジェクト構文を使用できます。
describe User do
subject(:author) { User.new }
it 'is valid' do
expect(author).to be_valid
end
end