在RSpec-2.11中使用带'expect'的隐式`subject`

使用rspec-2.11中的新expect语法,怎样才能使用隐式subject ? 有没有比明确参考subject更好的方法,如下所示?

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

如果将RSpecconfiguration为禁用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 

使用is_expected 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