1

だから私は機能を持つモジュールを書きました。そして今、私は機能をテストしようとしています。ここでの私の質問は、モッキングやスタブなどを使用して、関数から 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

ご協力ありがとうございました。

4

1 に答える 1

0

チェックアウトhttps://github.com/bblimke/webmockまたはhttp://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 に答える