1

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

正在测试的模块:

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

谢谢大家的帮助。

4

1 回答 1

0

结帐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(它还有更多功能),但它们都适合你,而且在它们之间切换非常容易。

于 2013-10-21T20:19:08.330 回答