2017-09-14 117 views
0

我想让我的一个控制器在我的控制器中发出一个http请求,以“获取”并解析一个xml,然后我可以在我的视图中显示。听起来像是一件容易的事..来自rails控制器的http请求

require 'net/http' 

class Profile::EventTypesController < ProfileController 

    def index 
    url = URI.parse('instagram.com') 
    req = Net::HTTP.new(url, 80) 
    res = req.get('/my_account') 

    xml = res.body 
    @feed = Feedjira::Feed.parse xml 
    ... 

    ... 
    end 
end 

当我尝试一下它不会工作,呈现出以下异常:

WebMock::NetConnectNotAllowedError at /de 
Real HTTP connections are disabled. Unregistered request: GET http://instagram.com/my_account with headers {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'} 

stub_request(:get, "http://instagram.com/partyguerilla"). 
with(headers: {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}). 
to_return(status: 200, body: "", headers: {}) 

有什么办法,使“REAL HTTP连接”,从内我的控制器?当我谷歌,这是所有关于嘲笑存根,并从测试内做到这一点..以前有人经历过相同的?

THX

回答

1

检查您的Gemfile为gem webmock。它应该只包含在测试组中,而不是开发。

group :test do 
    gem 'webmock' 
end 

同样适用于rspec-rails宝石。看到这个issue

+0

如果你不能改变你的配置,还有什么工作 - >你可以设置“WebMock.allow_net_connect!”之前和“WebMock.disable_net_connect!”您想要启用请求的代码片段!希望这可以帮助别人.. – muenchnair

相关问题