aws lambdaのTDD
- 単体テスト: junit
- 結合テスト: SAM
以上の組み合わせでTDDでlambdaを作成する
eclipseでlambda project作成
eclipseの「Help」->「install New Software」を選択
update site https://aws.amazon.com/eclipse - https://aws.amazon.com/eclipseを入力
以下の画像のようにチェックを入れてNextを押下

eclipseを再起動する旨のポップアップが出るため、それに従い再起動。
「File」->「New」->「other」より以下のようにlambdaプロジェクトを選択する

SAMlocal環境の構築
以下のAWS公式手順のうち、自分のOSに対応する手順でやれば構築できる
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html
テスト用CFnテンプレート作成
src/test/resources配下に以下のようにtemplate.ymlを作成する

このCFnテンプレートに結合テストで使用する他のAWSリソースを記述していく
さらにsrc/test/resources配下に以下のようにevent.jsonを作成する

このjsonファイルを結合テストで実行するlambdaのinputとして使う
SAMテスト実行
「Run」->「Run Configurations」からAWS SAM Localを選択し、以下のように入力しApplyを押下

以下のようにコンソールに出力されればSAMlocalでテストを行う準備はOK

次回は実際に単体テスト、結合テストをしながらTDDしていく
appendix
docker周りの設定で若干詰まった。
SAM localでテストを実行すると以下のエラーが発生した
docker.credentials.errors.InitializationError: docker-credential-desktop not installed or not available in PATH
~/.docker/config.jsonを以下のように修正するとエラー解消した
{
- "credsStore" : "desktop",
"auths" : {
},
"stackOrchestrator" : "kubernetes"
}
Docker Registoryの認証情報保存先消すと上手くいく。
理由はよく分からないけれど。。
