Rspec implicitly defined subject documentation说:
虽然以下示例演示了如何将主题用作a 面向用户的概念,我们建议您保留它以支持 隐藏其使用的自定义匹配器和/或扩展库 实例
这是否意味着,我应该试着永远不要称之为“主题”。直接在我的规格?如果是,我应该使用什么作为主题对象?
答案 0 :(得分:3)
比较以下两个例子:
describe "User" do
subject { User.new(age: 42) }
specify { subject.age.should == 42 }
its(:age) { should == 42 }
end
describe "User" do
let(:user) { User.new(age: 42) }
specify { user.age.should == 42 }
end
<强>更新强>
Rspec中有一个很酷的功能 - 名为subject:
以下是David Chelimsky的example:
describe CheckingAccount, "with a non-zero starting balance" do
subject(:account) { CheckingAccount.new(Money.new(50, :USD)) }
it { should_not be_overdrawn }
it "has a balance equal to the starting balance" do
account.balance.should eq(Money.new(50, :USD))
end
end
当您使用user
代替subject
时,它更具可读性(恕我直言)。
但subject
允许您使用不错的扩展程序its(:age)
。