首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSpec和Mongoid以及rails-api

RSpec和Mongoid以及rails-api
EN

Stack Overflow用户
提问于 2012-12-13 01:11:09
回答 1查看 624关注 0票数 4

我正在尝试将RSpec与Mongoid和rails-api结合使用。我使用的Gems是rspec-railsmongoid-rspec。一切都很好,除了这个小东西:

代码语言:javascript
复制
# 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

执行此操作时,我只收到以下错误消息:

代码语言:javascript
复制
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)>'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-12 11:33:56

@users = User.all是延迟加载的,所以实际的对象是一个条件。

您可以根据条件进行检查,也可以像这样使用数组:

代码语言:javascript
复制
assigns(:users).to_a.should eq([user])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13845000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档