0

更新:我现在意识到我一直在误读差异,并且我在比较的一侧有一个字符串或符号。然而,我仍然不确定我应该如何在这个测试中寄予期望..

一般来说,我是 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

这些结果集看起来相同。为什么这个规范会失败?提前致谢!

4

1 回答 1

0

我认为问题在于assigns. 它将符号:users与您的列表进行比较。将其更改为:

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

并且只是关于如何阅读 Rspec 失败的注释。之后的部分expected是你给的should,而之后的部分got是你的代码实际产生的值。因此,从报告中可以清楚地看出,结果集并不相同。

于 2012-04-06T13:13:42.513 回答