2
我在與外部視頻編碼服務(Zencoder)交互的模型中有一種方法。它使用zencoder_rb gem。 https://github.com/zencoder/zencoder-rb我該如何使用RSpec來測試我的模型與外部服務的交互
class EncodingRequest
def check_encoding_status
response = Zencoder::Job.details(self.request_id)
if response.success?
# do something
else
# do something else
end
end
end
的Zencoder ::招聘#細節方法使該Zencoder調用Web服務,以找出是否視頻編碼完成。
問題是我該如何劫持Zencoder :: Job#details方法,所以當它被check_encoding_status調用時,它會返回一個我可以製作的對象。計劃是讓這個對象響應#成功?以任何方式對我的測試都有意義。
因此,這裏是我想如何規範
it "should mark the encoding as failed if there was an error in Zencoder" do
dummy_response = Zencoder::Response.new(:body => {:state => "finished"}, :code => 200)
# code that will force Zencoder::Job#details to return this dummy_response
@encoding = EncodingRequest.new(:source_asset => @final_large, :target_asset => @final_small)
@encoding.check_encoding_status
@encoding.status.should eql "success"
end
我目前使用的RSpec 2.5的樣子。 我讀了一些關於嘲笑和存根的文章,但我不確定在這種情況下可以使用它們。
非常感謝您的幫助。
謝謝!存根和stub_chain的工作就像一個魅力! – momo 2011-05-30 20:10:53