2012-09-17 42 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 
... 

被稱爲像:after_save :create_or_rename_folder, :if => :production_env?

我想測試在創建新TopicCreateTopicFolder實例被創建,並,如果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

相關問題