2

这是我直接在节点中运行时用于删除和重新创建表的代码。

    // 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) 时编写测试的方式。我有点不知所措。

当我在 mocha 中运行它时,同样的代码不起作用。这是代码:

//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');
                    }
                });
            }
        });
    }
});
4

0 回答 0