ホームページ  >  に質問  >  本文

Sinon は AWS DynamoDB 接続呼び出しのシミュレーションを実装します

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

ハンドラー.js:

リーリー

Handler.spec.js:

リーリー

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

コンソール経由で
err

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

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

全員に返信(2)返信します

  • P粉714780768

    P粉7147807682024-03-22 18:19:12

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

    次に、それを

    saveUser

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

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

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

    テストコード:

    リーリー

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

    リーリー

    パッケージ.json

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

    返事
    0
  • P粉476046165

    P粉4760461652024-03-22 16:16:37

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

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

    db.js

    リーリー

    yields() 関数

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

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

    役立つリンク

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

    返事
    0
  • キャンセル返事