を使用してTwilio APIとの統合をテストする方法Twilio-RubyをRubyに統合し、その宝石を使用してAPIに投稿するいくつかのメソッドを作成しました。Minitest
はここでRailsの中に私TwilioMessageモデル内のメソッドの例です:
def message(recepient_number, message_body = INSTRUCTIONS, phone_number = '++18889990000')
account_sid = ENV['TWILIO_ACCOUNT_SID']
auth_token = ENV['TWILIO_AUTH_TOKEN']
@client = Twilio::REST::Client.new account_sid, auth_token
@client.account.messages.create({
:from => phone_number,
:to => recepient_number,
:body => message_body
})
end
私はMinitestスイートでWebMockとMochaを統合しようとしたが、私はちょうどそれを開始する場所がわからないんだけど。
私は、発信要求をブロックするWebMockを使用し、それを試してみましたスタブ:
stub_request(
:post, "https://api.twilio.com/2010-04-01/Accounts/[ACCOUNT_ID]/Messages.json"
).to_return(status: 200)
私のセットアップブロックで。
はその後、私のテストでは、私が持っている:
私test_helperファイルでtest "send message" do
TwilioMessage.expects(:message).with('+18889990000').returns(Net::HTTPSuccess)
end
私はそれがローカル接続のみを許可するように設定されています。
WebMock.disable_net_connect!(allow_localhost: true)
しかし、私が受け取っ:
Minitest::Assertion: not all expectations were satisfied
unsatisfied expectations:
- expected exactly once, not yet invoked: TwilioMessage(id: integer, from_number: string, to_number: string, message_body: text, message_type: string, twilio_contact_id: integer, created_at: datetime, updated_at: datetime).send_message('+18889990000')
を私はTwilio-Rubyの宝石のための仕様を見てみましたが、運がなかったです。
どのようにテストしたか、またはテストする方法の例と説明がありますか?私はそれの周りに私の頭をラップしようとしています。
出力から、send_messageが呼び出されなかったようです。 1つのアプローチは、WebMockをインターネットに接続できるように設定し、Twilio APIを呼び出している間にテストが合格になるように書くことです。それが通過した後は、ネット接続を無効にしてリクエストをスタブして、まだ通過テストをしていますが、Twilioを呼び出さないようにしてください。 –