我如何使用RSpec来测试我的模型与外部服务的交互

问题描述

|| 我在模型中有一个与外部视频编码服务(Zencoder)交互的方法。它使用zencoder_rb gem。 https://github.com/zencoder/zencoder-rb
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 :: Job#details方法调用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。 我读了一些有关模拟和存根的信息,但是我不确定在这种情况下是否可以使用它们。 非常感谢您的帮助。     

解决方法

        
Zencoder::Job.stub_chain(:details,:success).and_return(true)
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...