在测试期间重新加载模型

时间:2018-01-05 16:22:08

标签: ruby-on-rails ruby mongodb rspec database-cleaner

我使用mongoid,我有一个ContactField模型和一个Contact模型。在我的Contact模型中,我这样做:

Admin::ContactField.all.each do |field|
field field.field_name.to_sym#, type: ...
end

所以在prod,dev中,这是函数,但是当我编写测试时,它不起作用,因为模型加载了0 Admin :: ContactField并且它不会重新加载。

所以我正在寻找解决方案,我找不到使用重装的解决方案!就像在控制台中一样,所以我试过了:

config.before(:suite) do
    DatabaseCleaner[:mongoid].strategy = :truncation, {:except => %w[admin_contact_fields]}
    DatabaseCleaner[:mongoid].clean_with(:truncation)
    DatabaseCleaner.clean
    generate_admin_contact_fields
    load '/Users/work/Work/work/app/models/contact.rb'
end

config.before(:each) do
  DatabaseCleaner.start
end

config.after(:each) do
  DatabaseCleaner.clean
end

这似乎有效,但它不会重新加载,它会加载两次。 所以我得到了很多警告,比如

WARN -- : Overwriting existing field content_seen in class Contact.
WARN -- : Overwriting existing field content_sent in class Contact.

WARN -- : Overwriting existing field url_c4c in class Contact.
WARN -- : Creating scope :is_valid_contact. Overwriting existing method Contact.is_valid_contact.
WARN -- : Creating scope :email_exists. Overwriting existing method Contact.email_exists.

您知道更好的解决方案吗?有点像reload!的东西吗? 感谢

0 个答案:

没有答案