Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我应该如何用rspec-rails测试这段代码?_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails 我应该如何用rspec-rails测试这段代码?

Ruby on rails 我应该如何用rspec-rails测试这段代码?,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,在我的rails应用程序中,我有一个带有API调用的模块,我想为其编写rspec测试。你会写什么作为这方面的适当测试?我读过《不要将httparty与rspec结合》一书,因为它速度非常慢,现在我不知道该怎么做。谢谢你的建议 module BandsInTown class API attr_reader :artist_name, :info, :events def initialize(artist_name) @artist_name = artis

在我的rails应用程序中,我有一个带有API调用的模块,我想为其编写rspec测试。你会写什么作为这方面的适当测试?我读过《不要将httparty与rspec结合》一书,因为它速度非常慢,现在我不知道该怎么做。谢谢你的建议

module BandsInTown
  class API
    attr_reader :artist_name, :info, :events

    def initialize(artist_name)
        @artist_name = artist_name
    end

    def artist_info
        @info = fetch_data
    end

    def artist_events
        @events = fetch_data 'events'
    end

    private

    def fetch_data(endpoint = nil)
        request_url = "http://api.bandsintown.com/artists/#{[@artist_name, endpoint].compact.join('/')}.json?api_version=2.0&app_id=AUTH_KEY"
        resp = HTTParty.get(request_url)
        return false if resp.code != 200
        resp
    end
  end
end
我通常会四处提出API请求

下面是一个关于yout
spec\u helper.rb
中的代码的示例:

require 'webmock/rspec'

def stub_api_requests
  response = File.read('spec/fixtures/payload.json')
  stub_request(:get, %r{http:\/\/api.bandsintown.com\/artists/\/(.)*})
    .to_return(
      status: 200,
      body: response
    )
end

config.before(:each) do
  stub_api_requests
end
我通常会四处提出API请求

下面是一个关于yout
spec\u helper.rb
中的代码的示例:

require 'webmock/rspec'

def stub_api_requests
  response = File.read('spec/fixtures/payload.json')
  stub_request(:get, %r{http:\/\/api.bandsintown.com\/artists/\/(.)*})
    .to_return(
      status: 200,
      body: response
    )
end

config.before(:each) do
  stub_api_requests
end

谢谢Vasile,这会出现在spec_助手中,但是rspec测试本身会出现什么?我不确定我是否理解。只需像往常一样测试这些方法。你可以通过webmock控制响应。是的,现在可以了!谢谢没问题。如果我的答案有帮助,请你投票表决,或选择它作为最佳答案。如果没有,请让我知道如何更清楚。谢谢Vasile,这将包含在spec_帮助程序中,但rspec测试本身会包含什么?我不确定我是否理解。只需像往常一样测试这些方法。你可以通过webmock控制响应。是的,现在可以了!谢谢没问题。如果我的答案有帮助,请你投票表决,或选择它作为最佳答案。如果没有,请让我知道如何更清楚地表达。