我的集成测试如下所示:
class OAuthTest < ActionDispatch::IntegrationTest
...
@client = OAuth2::Client.new(
client_id,
client_secret,
{ :site => 'https://provider', :token_url => '/oauth/access_token' }
)
@client.connection.build do |b|
b.adapter :action_dispatch, self
end
access_token = @client.auth_code.get_token(...)
access_token.get("/user.json")
并且使用 Faraday 0.7.6 它工作得很好,action_dispatch
适配器会将 http 请求路由到我的 Rails 应用程序(调用users_controller
)。但是在 Faraday 0.8.0 中,action_dispatch
适配器被替换为rack
(参见https://github.com/technoweenie/faraday/pull/134),我无法让它工作。
我想我需要将上面的代码更改为:
@client.connection.build do |b|
b.adapter :rack, self.app
end
但它在 Rack (1.2.5) 期待 Stream 失败,但它得到一个 Hash 并undefined read method for Hash
在第 149 行说(这里:https ://github.com/rack/rack/blob/1.2.5/lib/rack/request .rb#L149)。
我怎样才能使这项工作?