在Rspec的禁用事务灯具有没有影响
-
25-09-2019 - |
题
由于我使用的是传统的数据库,我坚持与MySQL的MyISAM使用,这意味着我的表不支持事务。这导致测试失败,因为生成的表数据(我使用夹具factory_girl)由测试均不会恢复为每个场景。
我发现Rspec的暴露在spec_helper.rb的config.use_transactional_fixtures
配置设置。
这是默认设置为true。当我将它设置为false,我看不到我的测试任何影响;他们仍然会由于重复的记录。
是不是该设置应该自动披到数据库所做的任何更改?或者,我应该这样做手工?
解决方案
你是正确的 - 如果你的数据库不支持事务处理,必须发出SQL命令消灭每个语句之前的数据:
TRUNCATE TABLE tablename;
一个用于每个表的
在您的helper.rb试试这个:
Spec::Runner.configure do |config|
config.before(:each) do
tables = %{users posts tags}
tables.each do |t|
ActiveRecord::Base.connection.execute('TRUNCATE TABLE #{t}')
end
end
...
end
不隶属于 StackOverflow