使用 rspec-2.11 中的新expect
语法,如何使用隐式subject
?有没有比明确引用更好的方法subject
,如下所示?
describe User do
it 'is valid' do
expect(subject).to be_valid # <<< can `subject` be implicit?
end
end
如果您将 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
使用 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