Запросы Vogel(Dynamodb) не работают в тестовых файлах с mocha
Вот код, который работает для удаления и воссоздания таблицы, когда я запускаю ее непосредственно на узле.
// module.exports = function () {
const vogels = require('vogels');
if ( process.env.NODE_ENV === "development") {
vogels.AWS.config.update({ accessKeyId: "myKeyId", secretAccessKey: "secretKey", region: "us-west-2" });
vogels.dynamoDriver(new vogels.AWS.DynamoDB({ endpoint: 'http://localhost:8000' }));
} else if (process.env.NODE_ENV === "test") {
vogels.AWS.config.update({ accessKeyId: "myKeyId", secretAccessKey: "secretKey", region: "us-west-2" });
vogels.dynamoDriver(new vogels.AWS.DynamoDB({ endpoint: 'http://localhost:8001' }));
} else {
vogels.AWS.config.update({accessKeyId: process.env.AWS_ACCESS_KEY, secretAccessKey: process.env.AWS_SECRET_KEY, region: process.env.AWS_REGION});
}
function wait(ms){
var start = new Date().getTime();
var end = start;
while(end < start + ms) {
end = new Date().getTime();
}
}
const DeliveryOrder = require("../api/models/DeliveryOrder");
vogels.createTables({
}, function(err) {
if (err) {
console.log('Error creating tables: ', err);
} else {
console.log('First creation');
DeliveryOrder.deleteTable(function(err) {
if (err) {
console.log('Error deleting table: ', err);
} else {
console.log('Table has been deleted');
vogels.createTables({
}, function(err) {
if (err) {
console.log('Error creating tables: ', err);
} else {
console.log('Tables have been created');
}
});
}
});
}
});
Любой код, который я пишу внутри тестов, которые имеют дело с БД, работает только случайным образом. Если бы я предположил, что это из-за асинхронной природы javascript, именно так пишутся тесты, когда мы используем mongoose(mongoDB). Я немного затрудняюсь понять, что происходит.
Тот самый код, который не работает, когда я запускаю его в мокко. Вот код:
//During the test the env variable is set to test
process.env.NODE_ENV = 'test'; //Just being safe.
let vogels = require('vogels');
// console.log(vogels);
vogels.AWS.config.update({ accessKeyId: "myKeyId", secretAccessKey: "secretKey", region: "us-west-2" });
vogels.dynamoDriver(new vogels.AWS.DynamoDB({ endpoint: 'http://localhost:8001' }));
let chai = require('chai');
let chaiHttp = require('chai-http');
let server = require('../server');
let should = chai.should();
const DeliveryOrder = require("../api/models/DeliveryOrder");
const _ = require('lodash');
chai.use(chaiHttp);
vogels.createTables({
}, function(err) {
if (err) {
console.log('Error creating tables: ', err);
} else {
console.log('First creation');
DeliveryOrder.deleteTable(function(err) {
if (err) {
console.log('Error deleting table: ', err);
} else {
console.log('Table has been deleted');
vogels.createTables({
}, function(err) {
if (err) {
console.log('Error creating tables: ', err);
} else {
console.log('Tables have been created');
}
});
}
});
}
});