2012-09-17 3 views
1

나는 다음과 같은 방법이있다 : 같은RSpec을 사용하여 after_save 콜백에서 클래스 초기화를 테스트하는 방법은 무엇입니까?

class Topic 
def create_or_rename_folder 
    unless self.destroyed? 
    bucket = CreateTopicFolder.new(bucket_name) 
    bucket.create_or_rename_folder(permalink.split("/").last) 
    end 
end 
... 

호출되는 : 내가 작성되는 새로운 Topic 새로운 CreateTopicFolder 인스턴스를 만들 때 그 테스트하고자하는 after_save :create_or_rename_folder, :if => :production_env?

, 또한 하는 경우 Topic이 파괴되면 CreateTopicFolder의 새 인스턴스는 이 아니며이 생성됩니다.

클래스는 같은 보이 :

class CreateTopicFolder 

    def initialize(bucket_name) 
    s3 = AutoVideoAssociate 
    s3.connect 
    @bucket = s3.find_bucket(bucket_name) 
    end 
    ... 

이 테스트에 대해 갈 수있는 올바른 방법은 무엇입니까?

감사합니다.

답변

0
context "When creating a Topic" do 
    it "creates a CreateTopicFolder" do 
    create_topic_folder = mock(CreateTopicFolder) 
    CreateTopicFolder.stub(:new) { create_topic_folder } 
    create_topic_folder. 
     should_receive(:create_or_rename_folder). 
     with("Sample Bucket Name") 
    topic = Topic.new 
    topic.bucket_name = "Sample Bucket Name" 
    topic.save! 
    end 
end 

context "When destroying a Topic" do 
    it "does not create a CreateTopicFolder" do 
    CreateTopicFolder.should_not_receive(:new) 
    topic = mock_model(Topic) 
    topic.destroy 
    end 
end 
+0

이 트릭을 수행 한 것 같습니다. – pthesis

관련 문제