使用HTTParty时,RSpec需要很长时间才能加载文件

时间:2016-06-15 15:57:13

标签: ruby-on-rails ruby rspec

我的应用程序使用HTTParty发送请求(以便抓取数据)。我写了一些rspec测试来测试发送请求服务。我的发送请求服务规范包括在我的应用程序中运行所有规范测试时要排除的标记:

RSpec.describe SearchFlight::Jet::SearchFlightRequest do
  describe 'send search ticket request to Jetstar website', http_request: true do
    context 'search ticket round trip successfully' do
      # initialize
      it 'return status 200' do
        # my expects here ...
      end
    end
  end
end

当我跑步时

bundle exec rspec --tag ~http_request

我花了超过4分钟加载和1.86s进行完成测试并运行选项(排除{:http_request => true)

如果我删除发送请求服务规范,加载文件的时间约为3.02秒。

有什么不同?为什么请求服务规范花了很长时间才排除它们?

1 个答案:

答案 0 :(得分:1)

我建议不要从Rspecs拨打外部服务。看看webmock gem并尝试模拟外部服务调用。以下是在spec_helper.rb中模拟所有Amazon S3请求的示例:

config.before(:each) do
    stub_request(:any, /.*s3.amazonaws.com.*/).to_return(:status => 200, :body => "", :headers => {})
end

通过这种方式,您可以模拟body中预期的响应。

根据您的问题,我认为没有任何理由说明为什么HTTPATy在Rspecs下可能会如此缓慢,可能与您的特定呼叫和/或所使用的外部服务有关。

希望这有帮助。