2013-03-19 110 views
0

我正在通過Michael Hartl書。我在第6.3.3節。我明白我們正在努力完成的。但是,對我來說,兩個這樣的規格似乎是測試同樣的事情:Hartl Ch 6規格說明

從user_spec.rb:http://ruby.railstutorial.org/chapters/modeling-users#code-authenticate_spec

describe "return value of authenticate method" do 
    before { @user.save } 
    let(:found_user) { User.find_by_email(@user.email) } 

    describe "with valid password" do 
     it { should == found_user.authenticate(@user.password) } 
    end 

    describe "with invalid password" do 
     let(:user_for_invalid_password) { found_user.authenticate("invalid") } 

     it { should_not == user_for_invalid_password }   #1 
     specify { user_for_invalid_password.should be_false } #2 
    end 
    end 

規格是1和2不能同時檢測了DB不應該驗證用戶如果他的密碼不正確?這些測試如何不同?

回答

0

規格1和2是相反的。

在第一個,你傳遞的有效密碼認證方法中,在這種情況下,使用戶返回對象本身,然後使用「應當」將其與主體用戶對象

在其次,你傳遞一個無效的密碼來驗證它,然後返回false,'should_not'等於主題用戶對象。

希望有所幫助。

+0

我想你誤解了我指的是哪兩個規格。我不是在談論「有效密碼」。我正在談論「無效密碼」中的兩個規格(請參見編號)。 – tir38 2013-06-01 16:25:13