mysql错误:无法销毁使用factoryGirl创建的对象

时间:2012-04-17 20:59:50

标签: mysql rspec connection destroy initialization

我使用mysql db在rails中运行rspec。在使用factoryGirl创建对象后,我想将其销毁,以便db看起来干净,以便运行下一个规范。 以下是我在规范中设置的方式:

before (:each) do
  User.destroy_all
  @user = Factory.create :user
end

after (:each) do
 @user.destroy
end

运行rspec时遇到错误:

Failure/Error: @user.destroy_all
 NameError:
   uninitialized constant User::connection

Failure/Error: @user.destroy
 NameError:
   uninitialized constant User::connection

我在用户模型中设置了:dependent => :destroy 这有什么不对?

1 个答案:

答案 0 :(得分:0)

问题是用@user类变量引用的Object是“未初始化的常量”。 IE,FactoryGirl工作正常,你的变量没有正确实例化@user对象。当连接不是数据库表字段时,您可能会引用连接。

如果是MySQL问题,则会出现与ActiveRecord相关的错误消息。

如果要在测试之前/之后清理数据库,请尝试使用此gem。它很棒。 http://rubygems.org/gems/database_cleaner

以下是我在a rails project

中配置RSpec的方法
RSpec.configure do |config|        
  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end
  config.before(:each) do
    DatabaseCleaner.start
  end
  config.after(:each) do
    DatabaseCleaner.clean
  end
end