2012-11-25 6 views
0

Mongoid 클래스를 사용하여 Ruby 객체를 MongoDB에 유지합니다. 예 개체 : 내 테스트에서RSpec에서 믹스 인 메소드를 스텁하는 방법

class Option 
    include Mongoid::Document 

    field :name, type: String 
    field :created_at, type: Time, default: ->{ Time.now } 

end 

내가 나 자신 몽고 타격 개체를 방지하기 위해 작성 후 인스턴스를 스텁 찾을 :

o1 = Option.new 
o1.stub(:save!).and_return true #stub method 
o1.name = 'red' 
o1.save! 

명백한 문제는 내가이 모든 인스턴스에 대해이 작업을 수행해야합니다. 대신 Mongoid::Document.save! 메소드를 스텁링 할 수있는 방법이 있습니까? 즉, 대신 믹스 인입니까? 그런 식으로 믹스 인을 사용하는 모든 문서는 save!이 스텁됨을 알 수 있습니다.

미리 감사드립니다.

답변

1

물론 Monkeypatch Mongoid::Document 일 수도 있지만 그렇게 할 것을 권고합니다. 다른 테스트에는 원래 save!이 필요할 수 있습니다. 반복 스터 빙의 불편은 팩토리 메소드에 의해 완화 될 수있다 : 더 나은

def option_with_stubbed_save 
    option = Option.new 
    option.stub(:save!).and_return true 
    option 
end 
+0

또는 그것은'저장'방법, 예를 들어이있는 경우 개체의'저장'방법을 스텁하는 방법이 있습니다! HTTPS를! // 요점 .github.com/4145069 –

관련 문제