日々精進

新しく学んだことを書き留めていきます

aws-sdkを使ったクラスをMochaでテストするとうまく動かない

aws-sdkを使ってSNS経由でメールを送信するクラスを実装し、Mochaでテストするとメールが送信されず困った。
原因は非同期処理なのにdoneを使っていなかったのでレスポンスが返ってくる前にテストが終了してしまっていたこと。
しばらく触ってないとこんな初歩的なことを忘れてしまうんですね。。
SNSでメール送信のサンプルコードがあまりなかったので貼っておきます。

exports.SnsMessage = class SnsMessage
  constructor: (@message) ->
  send: (callback) ->
    AWS = require "aws-sdk"
    AWS.config.update
      accessKeyId: 'accessKeyId'
      secretAccessKey: 'secretAccessKey'
      region: 'ap-northeast-1'
      httpOptions:
        proxy: "proxy"
    sns = new AWS.SNS()
    args =
      TopicArn: "TopicArn"
      Subject: "Subject"
      Message: @message
    sns.publish args, (err, data) ->
      callback err, data