2017-02-24 4 views
3

aws-sdk-mockの約束を使って単体テストを書こうとしています。 DocumentClientを使用しています。aws-sdk-mockのDocumentClientによる約束のサポートを利用した嘲笑

私のコードは次のようになります。

const docClient = new AWS.DynamoDB.DocumentClient(); 

const getItemPromise = docClient.get(params).promise(); 
    return getItemPromise.then((data) => { 
    console.log('Success'); 
    return data; 
}).catch((err) => { 
    console.log(err); 
}); 

私のモックとユニットテストは次のようになります。

私のユニットテストを走っ
const AWS = require('aws-sdk-mock'); 
AWS.Promise = Promise.Promise; 

AWS.mock('DynamoDB.DocumentClient', 'get', function (params, callback) 
{ 
    callback(null, { Item: { Key: 'test value } }); 
}); 

dynamoStore.getItems('tableName', 'idName', 'id').then((actualResponse) => { 
    // assertions 
    done(); 
}); 

、私のテスト値を返さない、それは実際に私のモックをバイパスdynamoDbを直接呼び出します。私は間違って何をしていますか?私のモックを適切にセットアップするにはどうすればいいですか?

+0

あなたはこの解決策を見つけた参照してください? – gouravtiwari21

+0

@ gouravtiwari21、いいえ、私は決してしなかった。 – JAck28

答えて

4

それはあなたのコードからは不明だが、AWS-SDK-モックこのノート

NBあり:AWSサービスは

を嘲笑するSDKメソッドのためにテストされている関数内で初期化する必要が

ので、以下は正しく

var AWS  = require('aws-sdk'); 
var sns  = AWS.SNS(); 
var dynamoDb = AWS.DynamoDB(); 

exports.handler = function(event, context) { 
    // do something with the services e.g. sns.publish 
} 

を模擬しませんが、この意志

var AWS = require('aws-sdk'); 

exports.handler = function(event, context) { 
    var sns  = AWS.SNS(); 
    var dynamoDb = AWS.DynamoDB(); 
    // do something with the services e.g. sns.publish 
} 

はもっとここにhttps://github.com/dwyl/aws-sdk-mock#how-usage

+0

また、AWS.restoreをどこでも呼び出す場合は、約束が解決されてテストが完了した後に必ず呼び出してください。 – coderfin

関連する問題