2012-04-17 107 views
1

我正在使用mysql db在rails中运行rspec。在我使用factoryGirl创建一个对象后,我想销毁它,以便数据库看起来很干净,以便运行下一个规范。 下面是我在规格设置:mysql错误:无法销毁使用factoryGirl创建的对象

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这里有什么问题?

+0

小心......并不是说factoryWife!这将更难以摧毁!所以升级之前要小心.... :-) – TMS 2012-04-17 21:10:41

回答

0

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

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

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

下面是如何配置使用RSpec在a rails project

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