Javascript 使用摩卡和Sequelize测试模型

Javascript 使用摩卡和Sequelize测试模型,javascript,mysql,node.js,mocha.js,sequelize.js,Javascript,Mysql,Node.js,Mocha.js,Sequelize.js,我想使用Sequelize作为ORM在mysql数据库上测试CRUD操作,并使用Mocha/Chai进行单元测试。我使用http路由测试了记录的插入/删除,但我会直接测试模型,而不使用任何http连接。我尝试过这样做,但是当我启动测试时,记录没有被添加,并且我没有收到任何错误 app/model/article.js module.exports = function (sequelize, DataTypes) { var Article = sequelize.define('Ar

我想使用Sequelize作为ORM在mysql数据库上测试CRUD操作,并使用Mocha/Chai进行单元测试。我使用http路由测试了记录的插入/删除,但我会直接测试模型,而不使用任何http连接。我尝试过这样做,但是当我启动测试时,记录没有被添加,并且我没有收到任何错误

app/model/article.js

  module.exports = function (sequelize, DataTypes) {

  var Article = sequelize.define('Article', {
    title: DataTypes.STRING,
    url: DataTypes.STRING,
    text: DataTypes.STRING
  }, {
    classMethods: {
      associate: function (models) {
        // example on how to add relations
        // Article.hasMany(models.Comments);
      }
    }
  });

  return Article;
};
var fs = require('fs'),
  path = require('path'),
  Sequelize = require('sequelize'),
  config = require('../../config/config'),
  db = {};

var sequelize = new Sequelize(config.db);

fs.readdirSync(__dirname).filter(function (file) {
  return (file.indexOf('.') !== 0) && (file !== 'index.js');
}).forEach(function (file) {
  var model = sequelize['import'](path.join(__dirname, file));
  db[model.name] = model;
});

Object.keys(db).forEach(function (modelName) {
  if ('associate' in db[modelName]) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;
'use strict';

var expect = require('chai').expect;

var db = require('../../../app/models');
var Article = db.Article;

describe('article', function () {
  it('should load', function (done) {
    Article.create({
      title: 'Titolo',
      url: 'URL',
      text: 'TEXT'
    });
    done();
  });
});
app/model/index.js

  module.exports = function (sequelize, DataTypes) {

  var Article = sequelize.define('Article', {
    title: DataTypes.STRING,
    url: DataTypes.STRING,
    text: DataTypes.STRING
  }, {
    classMethods: {
      associate: function (models) {
        // example on how to add relations
        // Article.hasMany(models.Comments);
      }
    }
  });

  return Article;
};
var fs = require('fs'),
  path = require('path'),
  Sequelize = require('sequelize'),
  config = require('../../config/config'),
  db = {};

var sequelize = new Sequelize(config.db);

fs.readdirSync(__dirname).filter(function (file) {
  return (file.indexOf('.') !== 0) && (file !== 'index.js');
}).forEach(function (file) {
  var model = sequelize['import'](path.join(__dirname, file));
  db[model.name] = model;
});

Object.keys(db).forEach(function (modelName) {
  if ('associate' in db[modelName]) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;
'use strict';

var expect = require('chai').expect;

var db = require('../../../app/models');
var Article = db.Article;

describe('article', function () {
  it('should load', function (done) {
    Article.create({
      title: 'Titolo',
      url: 'URL',
      text: 'TEXT'
    });
    done();
  });
});
test/model/article.js

  module.exports = function (sequelize, DataTypes) {

  var Article = sequelize.define('Article', {
    title: DataTypes.STRING,
    url: DataTypes.STRING,
    text: DataTypes.STRING
  }, {
    classMethods: {
      associate: function (models) {
        // example on how to add relations
        // Article.hasMany(models.Comments);
      }
    }
  });

  return Article;
};
var fs = require('fs'),
  path = require('path'),
  Sequelize = require('sequelize'),
  config = require('../../config/config'),
  db = {};

var sequelize = new Sequelize(config.db);

fs.readdirSync(__dirname).filter(function (file) {
  return (file.indexOf('.') !== 0) && (file !== 'index.js');
}).forEach(function (file) {
  var model = sequelize['import'](path.join(__dirname, file));
  db[model.name] = model;
});

Object.keys(db).forEach(function (modelName) {
  if ('associate' in db[modelName]) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;
'use strict';

var expect = require('chai').expect;

var db = require('../../../app/models');
var Article = db.Article;

describe('article', function () {
  it('should load', function (done) {
    Article.create({
      title: 'Titolo',
      url: 'URL',
      text: 'TEXT'
    });
    done();
  });
});

使用async或Promissions来确保操作已完成

describe('article', function () {
  it('should load', function (done) {
    Article.create({
      title: 'Titolo',
      url: 'URL',
      text: 'TEXT'
    }).then( function (article) {
      // do some tests on article here
      done();
    });
  });
});