gpt4 book ai didi

ruby - 如何在不使用 vcr 的情况下在 RSpec 中 stub 外部 API?

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:00 24 4
gpt4 key购买 nike

我创建了一个模块,它利用 twilio-ruby gem 为另一个对象提供短信功能。代码有效,但我发现它很难测试。

module Sms

TWILIO_PHONE_NUMBER = "+44..."

ACCOUNT_SID = 'AC0...'
AUTH_TOKEN = 'ae7...'

def send_text_message(customers_phone_number, delivery_time)
@client = Twilio::REST::Client.new(ACCOUNT_SID, AUTH_TOKEN)
@client.messages.create(
from: TWILIO_PHONE_NUMBER,
to: customers_phone_number.to_s,
body: "Thank you! Your order was placed and will be delivered before #{delivery_time.to_s[11..15]}"
)
end

end

我可以使用 vcr 对 API 调用进行 stub ,但这对于我需要做的事情来说似乎有些过分了。网上最常见的建议是使用 WebMock,但在实现时我无法克服以下错误:

NoMethodError:
undefined method `[]' for nil:NilClass
# /Users/tomcoakes/.rvm/gems/ruby-2.2.0/gems/twilio-ruby-3.14.5/lib/twilio-ruby/rest/list_resource.rb:101:in `create'

我已经“p”检查了那个 twilio 文件并尝试模拟它期望的对象,但这对我不起作用。

谁能解释如何使用 WebMock 有效地阻止此 post 方法,或者是否有更简单的方法来 stub 此测试而不需要使用任何其他 gem?

最佳答案

你有没有考虑过用类似这样的东西来代替“send_text_message”:

ruby
期望(对象)。接收(:发送文本消息)

或类似的东西?

关于ruby - 如何在不使用 vcr 的情况下在 RSpec 中 stub 外部 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28558377/

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