存根由 ActiveRecord 类上的插件添加的方法

发布于 2024-11-06 00:49:30 字数 346 浏览 3 评论 0原文

我在用户模型上使用插件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 调用,使其不会访问数据库,我的测试将会运行得更快。

谢谢!

I'm using the plugin acts_as_audited on the User model. So i have the following in user.rb -

class User < ActiveRecord::Base
  acts_as_audited
end

I know that the plugin acts_as_audited works, as it has its own unit tests.

I want to stub the call of "acts_as_audited" in my own specs, as everytime I create a user or make changes it to, acts_as_audited does its thing, and audits every change.

My tests would run much faster if I could stub out the acts_as_audited call so that it doesn't hit the database.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

仙气飘飘 2024-11-13 00:49:30

我不认为有任何内置的acts_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

I don't think there's anything built-in to acts_as_audited to stub the plugin, but there was a feature request to do so:

https://github.com/collectiveidea/acts_as_audited/issues/18

One solution is to write a hook to avoid writes to the DB if a static class variable is 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文