2011-05-10 3 views
2

사용자 모델에서 acts_as_audited 플러그인을 사용하고 있습니다. 그래서 user.rb에 다음과 같은 한 - 그것은 자신의 유닛 테스트를 가지고로스텁 ActiveRecord 클래스의 플러그인으로 추가 된 메소드

class User < ActiveRecord::Base 
    acts_as_audited 
end 

나는, 플러그인이 작동 acts_as_audited 것을 알고있다.

사용자를 만들거나 변경할 때마다 acts_as_audited가 일을하고 모든 변경 사항을 감사 할 때마다 "acts_as_audited"의 호출을 내 사양에 스텁 싶습니다.

acts_as_audited 호출을 스텁 (stub)하여 데이터베이스에 도달하지 못하는 경우 내 테스트가 훨씬 빠르게 실행됩니다.

감사합니다.

답변

2

나는 내장 acts_as_audited에 플러그인을 스텁 아무것도 생각하지 않지만, 그렇게 할 수있는 기능 요청이 있었다 :

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

하나의 솔루션은 쓰기를 방지하기 위해 후크를 작성하는 것입니다은 정적 클래스 변수가 false 인 경우 DB에 전달합니다.

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