使用mongoid制作 - 错误的参数数量

时间:2012-08-23 14:34:11

标签: rspec mongoid fabrication-gem

我正在使用Mongoid。我有一个对象:

class Employee
  include Mongoid::Document

    field :name_first,      type: String
    field :name_last,       type: String
    field   :name_other,        type: Array,    default: []
    field :title,                   type: String
    field :education,           type: Hash,     default: {}
    field :languages,           type: Array,    default: []
    field :phone,                   type: Hash,     default: {}
    field :address,             type: Hash,     default: {}
    field :email,                   type: Array,    default: []
    field :url,                     type: Array,    default: []
    field :history,             type: Array,    default: []
    field :profile,             type: String
    field :social_media,    type: Hash,     default: {}
    field :last_contact,    type: Time
    field :signed_up,           type: Date

    belongs_to :user
    belongs_to :practice
end

而且,我正在尝试使用Fabrication,并遇到问题。宝石安装好了。在/spec/fabricators/employee_fabricator.rb我有

Fabricator :employee do

end

在my_controller_spec.rb中我有:

describe CasesController do

    describe "viewing cases" do
    before(:each) do
        Fabricate(:employee)
    end

    it "allows viewing the cases index page" do
        get 'index'
        response.should_not be_success
    end
    end
end

当我在终端中运行'rspec spec'时,我得到:

Failures:

  1) CasesController viewing cases allows viewing the cases index page
     Failure/Error: Fabricate(:employee)
     ArgumentError:
       wrong number of arguments (2 for 1)

这里发生了什么?我尝试了各种排列,其中一些会抛出其他错误,但没有任何运行。如果不调用Fabricate(:employee)行,它会按预期运行,但到目前为止只有空测试...

1 个答案:

答案 0 :(得分:0)

使用活动记录时遇到了同样的问题。

我发现Fabrication gem 2.6版将第二个属性传递给active_record / base.rb初始值设定项:{:without_protection => true}

这种变化似乎是在Rails 3.2中(我在3.0上)。新参数开始由版本2.0.2中的Fabrication gem传递,所以我将我的gem文件中的制作gem降级到2.0.1,直到我们将Rails升级到3.2

所以,基本上,我的建议是将Fabrication gem降级到2.0.1或将Rails升级到3.2