2016-12-26 15 views
1

mochaを使ったテストで、私はS3.getObject()の呼び出しに問題があります。mochaを使用してAWS S3.getobject()をモックする方法は?

ラムダでの私のコードは次のようである:

index.js:使用

S3.getObject(s3FileParams, function(err, data) { 
    if (err) { 
     var message = "Error while trying to get file object " + fullFileName + " from bucket " + bucketName + ". Make sure they exist and your bucket is in the same region as this function. Error: " + err; 
     console.error(message); 
    } 
    else { 
     userMetaDataJson = data.Metadata; 
    } 
    resolve(); 
}) 

(AWSラムダ関数内)とテストファイルで index.test.js(モカ)

AWSMock.mock('S3', 'getObject', function (params, callback){ 
    var metaDataParams = { 
     "Metadata": { 
      "startDate": "2016-11-11 12:34:56:000", 
      "endDate": "2016-11-11 12:34:56:000", 
      "userName": "userName", 
      "originalFileName": "originalFileName" 
     } 
    }; 
    callback(false, metaDataParams); 
}); 

このテストをmochaで実行すると、cal私はgetObject()を嘲笑して元のものを呼び出していますが、私ができることは何ですか?

私が使用できる他の方法はありますか?代わりに、個々のS3応答をからかっの、あなたはまた、いくつかの非常に洗練された既存のモックフレームワークを利用することができます:

答えて

1

ソリューションは、グローバル変数としての私のAWSラムダの内部ではなく

0

1つのヒントをS3インスタンスを作成することでした。たとえばmotoは、実際のS3 APIと非常によく似た機能を提供します。

LocalStackは、既存のツールを統合し、統合テストに使用できる完全機能のローカルクラウド環境(S3も含む)を提供するフレームワークです。

これらのツールのいくつかは他の言語(Python)で書かれていますが、node.jsテストの外部プロセスでテスト環境をスピンアップするのは簡単です。

関連する問題