在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