2012-06-11 18 views

回答

3

比較這2個例子:

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 

UPDATE

有在Rspec的一個很酷的功能 - 名爲主題:

這裏是從大衛赫利姆斯基的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)

+1

現在,您可以在這種情況下爲了兩全其美而做'subject(:user)'。 –

+1

謝謝,我更新了答案 – cutalion

+0

何時使用'let'和何時使用'subject'? – Lokesh