2016-06-17 1 views
0

Я запускаю пару контейнеров Docker, один с локальным запуском DynamoDB, а другой работает с Nodejs. Они связаны между собой, и я могу подтвердить связь работает на работающем:Время выполнения запроса DynamoDB в мокко-тесте

$ aws dynamodb list-tables --endpoint-url=http://dynamodb:8000 

Я не думаю, что это часть проблемы, я просто перечислить его здесь для полноты картины.

Однако, я не могу получить следующий тестовый скрипт в мокко для работы. Испытание только раз из:

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(); 
     }); 
    }); 
}); 

я могу видеть «Проверка таблиц ...» вошли, но не «возвращается список таблиц.».

+0

Нет опыта с этим сам, но из [Документов] (HTTP: // docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#constructor_details) похоже, что 'endpoint' должно быть прямым свойством объекта' options', переданного конструктору: 'new aws.DynamoDB ({endpoint : ...}) ' – robertklep

+0

@robertklep вот и все! Если вы опубликуете это как ответ, я соглашусь с ним –

ответ

0

The documentation предполагает, что endpoint должен быть «прямой» свойство опции объекта (а не вложены в params):

var db = new aws.DynamoDB({ endpoint: 'http://dynamodb:8000' }); 
Смежные вопросы