使用Mocha和Sequelizetesting模型

我想使用Sequelize作为ORM和Mocha / Chai进行unit testing来testingmysql数据库上的CRUD操作。 我testing了插入/删除logging使用HTTP路由,但我会直接testing模型,而不使用任何http连接。 我试图做到这一点,但是当我启动testinglogging不会被添加,我不会收到任何错误。

应用程序/模型/ 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; }; 

应用程序/模型/ index.js

 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; 

testing/模型/ article.js

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

请使用asynchronous或承诺确保操作完成。

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