gpt4 book ai didi

ruby-on-rails-3 - Rspec 从我的函数模拟我对外部 api 的调用并将自定义响应返回给函数

转载 作者:行者123 更新时间:2023-12-03 10:07:10 26 4
gpt4 key购买 nike

所以我写了一个有功能的模块。现在我正在尝试测试该功能。
我的问题是,我如何使用模拟或 stub 等来测试我们从函数获取到 github 的请求并将自定义 json 返回给函数的随机用户 ID。

正在测试的模块:

require 'json'
require 'httparty'

module util

GITHUB_URL = 'http://github.com/'

def get_name(id)
begin
response = HTTParty.get("#{GITHUB_URL}#{id}.json")
data = JSON.parse(response.body)
return data.first['actor_attributes']['name']
rescue Exception => e
return nil
end
end
end

我的 Rspec 文件:
# coding: UTF-8
require 'spec_helper'

class DummyClass
end

describe 'GET_NAME' do
before(:each) do
@dummy_class = DummyClass.new
@dummy_class.extend(util)
end

context 'for invalid Github ID' do
it 'return nil' do
expect(@dummy_class.getName('invalid')).to be_nil
end
end

end

感谢大家的帮助。

最佳答案

结帐https://github.com/bblimke/webmockhttp://fakeweb.rubyforge.org/

然后你做类似的事情:

stub_request( 
:post, "#{GITHUB_URL}1.json"
).to_return(
body: { actor_attributes: {name: "Bill"} }.to_json
)

我比 Fakeweb 更喜欢 Webmock(它还有更多功能),但它们都适合你,而且在它们之间切换非常容易。

关于ruby-on-rails-3 - Rspec 从我的函数模拟我对外部 api 的调用并将自定义响应返回给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com