2012-04-06 9 views
0

更新:私はdiffを誤読してしまったので、比較の片側に文字列または記号があります。しかし、私はこのテストで期待をどのように置くべきかまだ分かりません。Rspecと一致するActiveRecordの結果セット

私はRspecとTDDを一般的に使い慣れています。

def index 
    @users = User.page(params[:page]) 
end 

(私はページ付けするKaminaraを使用しています)

そしてスペック:

describe "when the user DOES have admin status" do 

    login_admin_user 
    it "should allow the user access to the complete user list page" do 
    get :index 
    response.response_code.should == 200 
    end 

    describe "and views the /users page" do 
    before(:each) do 
     User.stub(:page) {[ mock_model(User), mock_model(User), mock_model(User) ]} 
    end 

    it "should show all users" do 
    get :index 
    assigns (:users).should =~ User.page 
    end 
    end 

end 

スペックは以下で失敗します。

Failure/Error: assigns (:users).should =~ User.page 
    expected: [#<User:0x5da86a8 @name="User_1004">, #<User:0x5d9c90c @name="User_1005">, #<User:0x5d93ef6 @name="User_1006">] 
     got: :users (using =~) 
    Diff: 
    @@ -1,4 +1,2 @@ 
    -[#<User:0x5da86a8 @name="User_1004">, 
    - #<User:0x5d9c90c @name="User_1005">, 
    - #<User:0x5d93ef6 @name="User_1006">] 
    +:users 
私はこれを行うコントローラを持っています

これらの結果セットは同じように見えます。なぜこの仕様は失敗するのですか?前もって感謝します!

答えて

0

問題は、assignsの後のスペースだと思います。シンボル:usersをあなたのリストと比較しています。

assigns(:users).should =~ User.page 

そしてRSpecの障害の読み方についてちょうどノート:に変更します。 expectedの後の部分は、shouldに与えられたものですが、gotの後の部分は、実際にコードが生成した値です。結果セットが同一ではないことは、レポートから明らかです。

+0

はい、クラックしました。ありがとう! – theflyingbrush

関連する問題