【问题标题】:RSpec and Mongoid together with rails-apiRSpec 和 Mongoid 以及 rails-api
【发布时间】:2012-12-12 17:11:08
【问题描述】:

我正在尝试将 RSpec 与 Mongoid 和 rails-api 一起使用。我使用的宝石是rspec-railsmongoid-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)>'

【问题讨论】:

  • 我也一样。不知道为什么。

标签: ruby-on-rails-3 rspec mongoid rails-api


【解决方案1】:

@users = User.all 是延迟加载的,因此实际对象是 Criteria。

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

assigns(:users).to_a.should eq([user])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多