Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using implicit `subject` with `expect` in RSpec-2.11

With the new expect syntax in rspec-2.11, how is it possible to use the implicit subject? Is there a better way than explicitly referencing subject, like below?

describe User do   it 'is valid' do     expect(subject).to be_valid    # <<< can `subject` be implicit?   end end 
like image 437
Hosam Aly Avatar asked Sep 04 '12 09:09

Hosam Aly


1 Answers

If you configure RSpec to disable the should syntax, you can still use the old one-liner syntax, since that doesn't involve should being added to every object:

describe User do   it { should be_valid } end 

We briefly discussed an alternate one-liner syntax, but decided against it since it wasn't needed and we felt like it might add confusion. You can, however, easily add this yourself if you prefer how it reads:

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 

With this in place, you could write this as:

describe User do   expect_it { to be_valid } end 
like image 145
Myron Marston Avatar answered Sep 20 '22 09:09

Myron Marston