我使用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
这有什么不对?
答案 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