【问题标题】:Rspec to mock my call to external api from my function and return custom response back to the functionRspec 从我的函数模拟我对外部 api 的调用并将自定义响应返回给函数
【发布时间】:2013-08-19 05:23:27
【问题描述】:

所以我编写了一个具有功能的模块。现在我正在尝试测试该功能。 我的问题是,我如何使用模拟或存根等来测试我们从函数获取到 github 的请求并将自定义 json 返回给函数的随机用户 ID。

正在测试的模块:

require 'json'
require 'httparty'

module util

  GITHUB_URL = 'http://github.com/'

  def get_name(id)
    begin
      response = HTTParty.get("#{GITHUB_URL}#{id}.json")
      data = JSON.parse(response.body)
      return data.first['actor_attributes']['name']
    rescue Exception => e
        return nil
    end
  end
end

我的 Rspec 文件:

# coding: UTF-8
require 'spec_helper'

class DummyClass
end

describe 'GET_NAME' do
  before(:each) do
    @dummy_class = DummyClass.new
    @dummy_class.extend(util)
  end

  context 'for invalid Github ID' do
    it 'return nil' do
      expect(@dummy_class.getName('invalid')).to be_nil
    end
  end

end

感谢大家的帮助。

【问题讨论】:

    标签: ruby-on-rails-3 rspec mocking mocha.js stubbing


    【解决方案1】:

    结帐https://github.com/bblimke/webmockhttp://fakeweb.rubyforge.org/

    然后你做这样的事情:

    stub_request( 
      :post, "#{GITHUB_URL}1.json"
    ).to_return(
      body: { actor_attributes: {name: "Bill"} }.to_json
    )
    

    我比 Fakeweb 更喜欢 Webmock(它还有更多功能),但它们都适合你,而且在它们之间切换非常容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      相关资源
      最近更新 更多