DynamoDB 查询在 mocha 测试中超时
DynamoDB query times out in mocha test
我是 运行 一对 Docker 容器,一个使用本地 DynamoDB 运行,另一个使用 运行 Nodejs。它们是 linked,我可以通过 运行 确认 link 正在工作:
$ aws dynamodb list-tables --endpoint-url=http://dynamodb:8000
我不认为这是问题的一部分,我只是为了完整性而在此处列出。
但是,我无法在 mocha 中运行以下测试脚本。测试刚刚超时:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
这是测试脚本:
'use strict';
var expect = require('chai').expect;
var aws = require('aws-sdk');
aws.config.update({ accessKeyId: 'fakeAccessKey', secretAccessKey: 'fakeSecretAccessKey', region: 'fakeRegion', });
var db = new aws.DynamoDB({ params: { endpoint: 'http://dynamodb:8000' }});
describe('queue-handler', function() {
it('should connect to dynamodb and list tables', function(done) {
console.log("Check for tables...");
db.listTables({}, function(err, data) {
console.log("list tables returned.");
if(err)
console.log("Error listTables: " + JSON.stringify(err, null, 2));
else
console.log("listTables: " + JSON.stringify(data, null, 2));
done();
});
});
});
我可以看到 "Check for tables..." 已记录,但没有 "list tables returned."。
The documentation 建议 endpoint
应该是选项对象的 "direct" 属性(而不是嵌套在 params
中):
var db = new aws.DynamoDB({ endpoint: 'http://dynamodb:8000' });
我是 运行 一对 Docker 容器,一个使用本地 DynamoDB 运行,另一个使用 运行 Nodejs。它们是 linked,我可以通过 运行 确认 link 正在工作:
$ aws dynamodb list-tables --endpoint-url=http://dynamodb:8000
我不认为这是问题的一部分,我只是为了完整性而在此处列出。
但是,我无法在 mocha 中运行以下测试脚本。测试刚刚超时:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
这是测试脚本:
'use strict';
var expect = require('chai').expect;
var aws = require('aws-sdk');
aws.config.update({ accessKeyId: 'fakeAccessKey', secretAccessKey: 'fakeSecretAccessKey', region: 'fakeRegion', });
var db = new aws.DynamoDB({ params: { endpoint: 'http://dynamodb:8000' }});
describe('queue-handler', function() {
it('should connect to dynamodb and list tables', function(done) {
console.log("Check for tables...");
db.listTables({}, function(err, data) {
console.log("list tables returned.");
if(err)
console.log("Error listTables: " + JSON.stringify(err, null, 2));
else
console.log("listTables: " + JSON.stringify(data, null, 2));
done();
});
});
});
我可以看到 "Check for tables..." 已记录,但没有 "list tables returned."。
The documentation 建议 endpoint
应该是选项对象的 "direct" 属性(而不是嵌套在 params
中):
var db = new aws.DynamoDB({ endpoint: 'http://dynamodb:8000' });