虽然下面的示例演示了如何将主题用作面向用户的概念,但我们建议您保留它以支持自定义匹配器和/或隐藏其使用的扩展库。
这是否意味着,我应该尽量不叫“主题”。直接在我的规格中?如果是,我应该使用什么来代替主题对象?
虽然下面的示例演示了如何将主题用作面向用户的概念,但我们建议您保留它以支持自定义匹配器和/或隐藏其使用的扩展库。
这是否意味着,我应该尽量不叫“主题”。直接在我的规格中?如果是,我应该使用什么来代替主题对象?
比较这两个例子:
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 中有一个很酷的功能 - 命名主题:
这是大卫切利姆斯基的一个例子:
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)
。