错误信息是这样的
WebMock::Response::InvalidBody: 必须是以下之一:[Proc, IO, Pathname, String, Array]。'哈希'给出
我正在使用下面的代码来测试谷歌库以在我的控制器中获取用户信息
stub_request(:get, "https://www.googleapis.com/userinfo/v2/me")
.to_return(
body: {email: "test@test.con", name: "Petros"},
headers: {"Content-Type"=> ["application/json","charset=UTF-8"]}
)
这是控制器代码
service = auth_with_oauth2_service(calendar_account.get_token)
response = service.get_userinfo_v2
calendar_account.user_id = current_user.id
calendar_account.email = response.email
calendar_account.name = response.name
auth_with_oauth2_service 包含这个
def auth_with_oauth2_service(access_token)
auth_client = AccessToken.new access_token
service = Google::Apis::Oauth2V2::Oauth2Service.new
service.client_options.application_name = "****"
service.authorization = auth_client
return service
end
回复内容形式
#<Hurley::Response GET https://www.googleapis.com/userinfo/v2/me == 200 (377 bytes) 647ms>
Success - #<Google::Apis::Oauth2V2::Userinfoplus:0x007ff38df5e820
@email="****",
@family_name="Kyriakou",
@gender="male",
@given_name="Petros",
@id="",
@link="***",
@locale="en-GB",
@name="Petros Kyriakou",
@picture=
"***",
@verified_email=true>
服务是谷歌的授权,然后请求我可以使用 response.email 和 response.name 访问的用户数据。
但是,由于 google gem 获取信息并从中创建哈希,因此我无法对字符串执行任何 JSON.parse 等操作。
这样做的方法是什么?
测试套件:Rspec、capybara、webmock、VCR