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