由于命名空间冲突无法测试RSpec?

时间:2014-01-29 18:30:52

标签: ruby-on-rails unit-testing rspec namespaces nameerror

我的Rails应用程序中有User模型,我也有UserQueue模型。

User has_many UserQueuesUserQueue belongs_to User

这是问题所在。当我尝试测试UserQueue并尝试使用

创建一个时
let(:user) { FactoryGirl.create(:user) }
before { @queue = user.user_queues.create(queue_privacy_id: 1) }

我收到以下错误。

NameError:
   uninitialized constant User::user_queue

我从中理解的是RSpec希望UserQueue位于User的名称空间(即User :: UserQueue)。然而,在我的应用程序中并非如此。我不能将模型命名为Queue,因为它是保留的。

有没有办法告诉RSpec该模型没有命名空间?

以下是我的模特。

class User < ActiveRecord::Base
  attr_protected

  has_many :user_queues, :class_name => "user_queue", :foreign_key => "user_id"

  def name
    "#{self.first_name} #{self.last_name}"
  end
end


class UserQueue < ActiveRecord::Base
  attr_accessible :queue_privacy_id, :user_id

  belongs_to :user, :class_name => "User", :foreign_key => "user_id"
end

1 个答案:

答案 0 :(得分:1)

我没有代表发表评论,但也会要求你发布你的工厂。

其他一些想法: 看看如何使用FactoryGirl处理assocations。我假设你不在Rails 4上因为:

attr_accessible :queue_privacy_id, :user_id