4

Twilio で SMS 経由でログイン コードを送信するユーザー ログイン コントローラーをテストしたいとします。Twilio をモックして、どのようなコードが返されているかを確認するには、テストをどのように設定すればよいですか。私のアプローチは、twilio クライアント オブジェクトをプロキシクワイアし、それを sinon でスパイすることでしたが、私はそれを完全に正しく理解しているとは思いません。

コントローラー user.js

var smsClient = new twilio.RestClient(config.get('twilio_account_sid'), config.get('twilio_auth_token'));

module.exports = {
  checkCode: function(phone){
        var code = getNewCode();
        smsClient.sms.messages.create({
            from: config.get('twilio_phone_number'),
            to: phone,
            body: 'Your code :' + code
        }, callback);
  }
}

テストファイル

var twilioMock = //what goes here??
var smsSpy = sinon.spy(twilioMock.sms.messages, 'create');
var User = proxyquire('../models/user', { 'mongoose': mongooseMock, 'smsClient': twilioMock }); 

... some describe and it statements ...
twilioMock.sms.messages.should.have.been.calledOnce()  //this is where I don't know what I should be checking

// or is this the right way? 
//smsSpy.should.have.been.calledOnce()
4

1 に答える 1