我目前正在使用mocha框架在nodejs中编写一些单元测试。最近,我一直在尝试使用aws-sdk-mock模块和同一页面上的说明来学习如何模拟Amazon Web Services SDK。 我想出了一个简短的测试,它应该模拟DynamoDB DocumentClient的'get'操作,调用它一次,然后记录返回值。这是代码:
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();
});
});
});
但是,由于某些原因导致我逃避,此测试会因超时错误而失败,因为回调错误似乎从未被调用过。这是完整的测试结果:
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.
我相信我非常仔细地遵循了aws-sdk-mock页面上的解释(我没有修改就复制了模拟部分),我在这段代码中找不到错误。我搜索了谷歌和Stackoverflow,但找不到类似的问题,所以谁能告诉我问题出在哪里?
提前致谢。