Код DynamoDB не работает внутри тестового примера Mocha? - PullRequest
0 голосов
/ 28 июня 2019

Справочная информация: Я создал таблицу Dynamo DB и заполнил ее. У меня есть некоторый код для чтения элемента в файле с именем readItem.js, который работает, когда я запускаю его автономно, но НЕ работает, когда я запускаю его как тестовый пример Mocha.

Есть идеи, почему код не работает должным образом внутри контрольного примера it ()?

В автономном режиме я запускаю приложение так:

node readItem.js

readItem.js:

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

AWS.config.update({
  region: "us-west-2",
  endpoint: "http://localhost:8000"
});

var docClient = new AWS.DynamoDB.DocumentClient();
var table = "Movies";
var year = 2015;
var title = "The Big New Movie";
var params = {
    TableName: table,
    Key:{
        "year": year,
        "title": title
    }
};

docClient.get(params, function(err, data) {
    if (err) {
        console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
    }
});

Однако, когда я запускаю его внутри тестового примера Mocha, функция обратного вызова при вызове docClient.get () не вызывается, т. Е .:

docClient.get(params, function(err, data) { ...// Not being invoked });

Вот как я структурировал код в качестве тестового примера. Я вызываю тест с:

npm run test

Где "test" определен в моем package.json как:

"scripts": {
"test": "./node_modules/.bin/mocha --recursive --reporter spec --ui bdd test/"
}

Код тестового примера:

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

AWS.config.update({
  region: "us-west-2",
  endpoint: "http://localhost:8000"
});

var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
let table = "Movies";
let year = 2015;
let title = "The Big New Movie";
let params = {
    TableName: table,
    Key:{
        "year": year,
        "title": title
    }
};



describe('DynamoDB Tests', function() {

    it("Read Item", function() {

        try {
            docClient.get(params, function (err,data) {
                if (err) {
                    console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
                } else {
                    console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
                }               
            });
        } catch (err) {
            console.log("ERROR:"+ err);
        }

    });
});

1 Ответ

0 голосов
/ 28 июня 2019

Я использовал более старую версию мокко: "мокко": "^ 3.5.3"

Обновление исправлено "мокко": "^ 6.1.4"

...