I am currently writing some unit tests in nodejs using the mocha framework. Recently, I've been trying to learn how to mock the Amazon Web Services SDK, using the aws-sdk-mock module and the explanations on the same page.
I have come up with a short test which is supposed to mock the DynamoDB DocumentClient 'get' operation, call it once, and log the return value. Here is the code:
var AWS = require('aws-sdk');
var AwsMock = require('aws-sdk-mock');
describe("xyz", function() {
it('should call "get" on mock database', function(done) {
AwsMock.mock('DynamoDB.DocumentClient', 'get', function(params, callback) {
callback(null, {
Item: {
Key: 'Value'
}
});
});
var dynamoDb = new AWS.DynamoDB.DocumentClient();
dynamoDb.get({}, function(err, data) {
console.log('data: ' + JSON.stringify(data));
done();
});
});
});
However, for some reason that is escaping me, this test keeps failing with a timeout error, as the callback error is seemingly never called. This is the full test result:
xyz
1) should call "get" on mock database
0 passing (2s)
1 failing
1) xyz should call "get" on mock database:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
npm ERR! Test failed. See above for more details.
I believe I followed the explanations on the aws-sdk-mock page pretty closely (I copied the mock part without changes), and I cannot find the fault in this code. I searched google and Stackoverflow, but couldn't find a similar question, so can anyone tell me where the problem is?
Thanks in advance.
via deadpool
No comments:
Post a Comment