【发布时间】:2015-02-17 09:16:52
【问题描述】:
我创建了一个模块,它利用 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 调用存根,但这对于我需要做的事情来说似乎有点过头了。网上最常见的建议是使用 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 方法,或者有没有更简单的方法来存根这个测试,不需要使用任何其他 gem?
【问题讨论】: