API Gateway に AWS の Lambda 関数にマップするエンドポイントがあります。エンドポイントの新しいハンドラー関数のテストケースを作成するとき、spec ファイルで実際の API を呼び出したり、DynamoDB に接続したりすることは望ましくありません。 sinon.stub
を追加しようとしましたが、依然として DynamoDB への接続が呼び出され、テストケースは失敗します。スタブのどこが間違っているのかわかりません。
ハンドラー.js:
リーリー
Handler.spec.js:
リーリー
###間違い:### リーリーコンソール経由で
オブジェクトをログに記録したところ、DynamoDB に接続しようとしているのではないかと思われるエラーが表示されました。
リーリー
P粉7147807682024-03-22 18:19:12
実際に使用される saveUser
ではなく、テスト ファイルで宣言された db
をモックしています。
解決策は、db 宣言を独自のモジュール (例: db.js) に移動することです。
リーリー
saveUser
モジュールからインポートしてテストします。これにより、saveUser が使用しているのと同じ
db インスタンスをモックできます。
更新
次のコードを使用してテストを正常に実行できました:
テストコード:リーリー
ユーザーハンドラーファイル:リーリー
パッケージ.jsonリーリー ######出力###
P粉4760461652024-03-22 16:16:37
データベース接続を別のファイルに分離し、それをハンドラー実装および spec ファイルにインポートできます。
db.js
リーリーyields()
関数 スタブは Promise
を直接返す必要はありませんが、.yields()
とそのコールバックが受け入れる引数と連鎖する必要があります。コードのさまざまな分岐をカバーするためにパラメーターを変更できます。