首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用RSpec测试我的模型与外部服务的交互

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

Stack Overflow用户
提问于 2011-05-28 04:58:05
回答 1查看 461关注 0票数 2

我在一个模型中有一个与外部视频编码服务(Zencoder)交互的方法。它使用zencoder_rb gem。https://github.com/zencoder/zencoder-rb

代码语言:javascript
复制
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调用它时,它将返回一个我可以手工创建的对象。计划是让对象响应#success?任何对我的测试有意义的方式。

所以这就是我想要的规格

代码语言:javascript
复制
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。我读过一些关于mock和stub的文章,但我不确定是否可以在这个场景中使用它们。

非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-28 17:27:55

代码语言:javascript
复制
Zencoder::Job.stub_chain(:details, :success).and_return(true)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6157621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档