通过控制器调用WebMock模型的功能

时间:2017-05-30 16:56:37

标签: ruby-on-rails ruby-on-rails-4 rspec rspec-rails webmock

我有现有的功能,其中specs调用控制器的HTTP PUT方法,后者又调用模型的方法来获取一些JSON数据。 API。

class SomeModel
  def GetData()
    uri = URI.parse('http://api.mydomain.com/getmydata/123/ohmyurl')
    Net::HTTP.start(uri.host, uri.port, :read_timeout => 200) do |http|
      request = Net::HTTP::Get.new(uri.request_uri)
      response = http.request(request)
      unless response.body == "null"
        return JSON.parse(response.body)
      end
      #......
    end
  end
end

class SomeController < ApplicationController
  def update
    #...
    @model.GetData()
    #...
  end
end

#......specs............

put :update

我需要在SomeModel中模拟API。到目前为止,我已经尝试过:

#......specs............

    before do
        stub_request(:get, /api.mydomain.com/)
            .with(headers: {'Accept'=>'application/json' })
            .to_return(status: 200, body: {id: 1, secondParam: '324'}.to_json, headers: {})

    end

#.......

    put :update
    result = JSON.load response.body
    expect(result['secondParam']).to eq("324")

无法模拟API调用并调用实际的API。

请忽略语法错误

0 个答案:

没有答案