如何使用RSpec 2关闭仅一个规格(或牛排情景)的交易固定装置?我在网上找到了一些没有成功的东西.
这会导致未定义的方法异常.
describe "MyClass without transactional fixtures" do self.use_transactional_fixtures = false ... end
这根本不起作用(事务夹具仍在使用):
describe "MyClass without transactional fixtures" do
RSpec.configure do |config|
config.use_transactional_fixtures = false
end
...
end
我还能尝试什么?
完整的错误是
ActiveRecord::StatementInvalid: Mysql2::Error: SAVEPOINT active_record_1 does not exist: ROLLBACK TO SAVEPOINT active_record_1
Run Code Online (Sandbox Code Playgroud)
每当我尝试创建一个新的ActiveRecord对象时,我正在编写单元测试并收到此错误 - 但仅在某个点之后.这些行发生在以下行之后:
ActiveRecord::Base.connection.execute "DROP TABLE IF EXISTS foo"
ActiveRecord::Base.connection.execute "CREATE TABLE foo (id INTEGER PRIMARY KEY)"
Run Code Online (Sandbox Code Playgroud)
(如果测试成功,表'foo'将填充数据)
在上面的行之前,我可以写一些类似的东西
User.create(email => 'foo@bar.com')
Run Code Online (Sandbox Code Playgroud)
一切正常.但是,如果我在调用ActiveRecord :: Base.connection.execute之后尝试编写上面的行,那么我会得到上面描述的SAVEPOINT错误.我也尝试将我的执行语句放在一个事务中,但这没有帮助.我很难过.
仅供参考 - 我正在使用Rails 3.2.8