我正在使用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
而且,我正在尝试使用捏造,但遇到了问题。宝石安装良好。在/规范/制造商/雇员_制造商.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)行的情况下,它按预期运行,但到目前为止只有空测试。。。
我在使用活动记录时遇到了同样的问题。
我发现版本2.6的Fabricationgem将第二个属性传递给active_record/base.rb初始值设定项:{:without_protection=>true}
这个变化似乎发生在Rails 3.2中(我使用的是3.0)。新参数在2.0.2版本中开始由Fabrication gem传递,所以我已经将gem文件中的Fabrication gem降级到2.0.1,直到我们将Rails升级到3.2
因此,基本上,我的建议是要么将Fabricationgem降级到2.0.1,要么将Rails升级到3.2