Sinon は AWS DynamoDB 接続呼び出しのシミュレーションを実装します
P粉633733146
P粉633733146 2024-03-21 21:36:37
0
2
359

API Gateway に AWS の Lambda 関数にマップするエンドポイントがあります。エンドポイントの新しいハンドラー関数のテストケースを作成するとき、spec ファイルで実際の API を呼び出したり、DynamoDB に接続したりすることは望ましくありません。 sinon.stub を追加しようとしましたが、依然として DynamoDB への接続が呼び出され、テストケースは失敗します。スタブのどこが間違っているのかわかりません。

ハンドラー.js:

リーリー

Handler.spec.js:

リーリー

###間違い:### リーリー

コンソール経由で
err

オブジェクトをログに記録したところ、DynamoDB に接続しようとしているのではないかと思われるエラーが表示されました。 リーリー

関連: AWS DynamoDB からデータを返すメソッドをテストする方法
P粉633733146
P粉633733146

全員に返信(2)
P粉714780768

実際に使用される saveUser ではなく、テスト ファイルで宣言された db をモックしています。 解決策は、db 宣言を独自のモジュール (例: db.js) に移動することです。 リーリー

次に、それを

saveUser

モジュールからインポートしてテストします。これにより、

saveUser が使用しているのと同じ db インスタンスをモックできます。 更新

次のコードを使用してテストを正常に実行できました:

テストコード:

リーリー

ユーザーハンドラーファイル:

リーリー

パッケージ.json

リーリー ######出力###

いいねを押す +0
P粉476046165

ファイル内の個別のデータベース接続

データベース接続を別のファイルに分離し、それをハンドラー実装および spec ファイルにインポートできます。

db.js

リーリー

yields() 関数

スタブは Promise を直接返す必要はありませんが、.yields() とそのコールバックが受け入れる引数と連鎖する必要があります。コードのさまざまな分岐をカバーするためにパラメーターを変更できます。

###コード### リーリー

役立つリンク

https://www.youtube.com/watch?v=vXDbmrh0xDQ

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート