0

更新:差分を読み間違えていることに気付きました。比較の片側に文字列または記号があります。しかし、私がこのテストにどのように期待を置くべきかはまだわかりません。

私は一般的にRspecとTDDに不慣れであり、この問題に遭遇しました。私はこれを行うコントローラーを持っています:

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

(私はページ付けにカミナラを使用しています)

そしてスペック:

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

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

4

1 に答える 1

0

問題は後のスペースだと思いますassigns。シンボル:usersをリストと比較しています。次のように変更します。

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

そして、Rspecの失敗を読み取る方法についてのメモ。後の部分expectedはあなたがに与えたものですが、should後の部分gotはあなたのコードが実際に生成した値です。したがって、結果セットが同一ではなかったことはレポートから明らかです。

于 2012-04-06T13:13:42.513 に答える