在我的Rails应用程序中,我正在测试一个发送SMS消息的实例方法。它看起来像这样:
group.rb
def send_notifications
twilio_sms = Twilio::REST::Client.new('mykey', 'mykey')
begin
twilio_sms.account.messages.create(
from: "+188888888",
to: "+1#{phone_number}",
body: "Message from Company: New item uploaded to group"
)
rescue
puts 'Invalid number'
end
end
我无法弄清楚如何测试twilio_sms.account.messages.create
部分。
到目前为止,我的规范看起来像这样:
group_spec.rb
describe Group do
context 'instance methods' do
describe '.send_notifictions' do
it 'calls the create method on the twilio messages object' do
twilio_messages = instance_double("Twilio::REST::Messages")
expect(twilio_messages).to receive(:create)
group = create(:group_with_notifications)
group.send_notifications
end
end
end
end
这显然不起作用,否则我不会问这个问题。测试创建消息是否正确发送的正确方法是什么?或者我是以错误的方式接近这个?任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
试试这个
describe Group do
describe 'instance methods' do
describe '.send_notifictions' do
it 'creates a new message' do
twilio_sms = double(:twilio_sms)
twilio_messages = double(:twilio_messages)
expect(Twilio::REST::Client).to receive(:new).with('mykey', 'mykey').and_return(twilio_sms)
expect(twilio_sms).to receive(:account).and_return(twilio_messages)
expect(twilio_messages).to receive(:messages).and_return(twilio_messages)
expect(twilio_messages).to receive(:create).with({:from => "+188888888", :to => "+15555555", :body => "Message from Company: New item uploaded to group"}).and_return(true)
group = Group.create(some_attributes: 'foo')
group.send_notifications
end
end
end
end