我在User模型上使用插件acts_as_audited。所以我在user.rb中有以下内容 -
class User < ActiveRecord::Base
acts_as_audited
end
我知道插件acts_as_audited有效,因为它有自己的单元测试。
我希望在我自己的规范中存根“acts_as_audited”的调用,因为每当我创建用户或对其进行更改时,acts_as_audited会执行其操作,并审核每个更改。
如果我可以删除acts_as_audited调用以便它不会访问数据库,那么我的测试会运行得更快。
谢谢!
答案 0 :(得分:2)
我认为act_as_audited没有任何内置的存根插件,但有一个功能请求:
https://github.com/collectiveidea/acts_as_audited/issues/18
一种解决方案是编写一个钩子,以避免在静态类变量为false时写入数据库:
module CollectiveIdea::Acts::Audited::InstanceMethods
private
def write_audit(attrs)
self.audits.create attrs if auditing_enabled && Audit.auditing_enabled?
end
end
class Audit
@@auditing_enabled = true
def self.auditing_enabled?
@@auditing_enabled
end
def self.disable_auditing
@@auditing_enabled = false
end
def self.enable_auditing
@@auditing_enabled = true
end
end