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