我正在尝试将RSpec与Mongoid和rails-api结合使用。我使用的Gems是rspec-rails和mongoid-rspec。一切都很好,除了这个小东西:
# users_controller_spec.rb
describe "GET index" do
it "assigns all users as @users" do
user = User.create! valid_attributes
get :index, {}, valid_session
assigns(:users).should eq([user])
end
end
# users_controller.rb
def index
@users = User.all
render json: @users
end执行此操作时,我只收到以下错误消息:
Failures:
1) UsersController GET index assigns all users as @users
Failure/Error: assigns(:users).should eq([user])
expected: [#<User _id: 50c8b84606027eb8aa000001, _type: nil, created_at: 2012-12-12 17:00:54 UTC, updated_at: 2012-12-12 17:00:54 UTC, name: "testuser", email: "testuser@gmail.com">]
got: #<Mongoid::Criteria
selector: {}
options: {}
class: User
embedded: false>
(compared using ==)
Diff:
@@ -1,2 +1,6 @@
-[#<User _id: 50c8b84606027eb8aa000001, _type: nil, created_at: 2012-12-12 17:00:54 UTC, updated_at: 2012-12-12 17:00:54 UTC, name: "testuser", email: "testuser@gmail.com">]
+#<Mongoid::Criteria
+ selector: {}
+ options: {}
+ class: User
+ embedded: false>
# ./spec/controllers/users_controller_spec.rb:41:in `block (3 levels) in <top (required)>'发布于 2013-02-12 11:33:56
@users = User.all是延迟加载的,所以实际的对象是一个条件。
您可以根据条件进行检查,也可以像这样使用数组:
assigns(:users).to_a.should eq([user])https://stackoverflow.com/questions/13845000
复制相似问题