У меня возникла проблема, когда мой модульный тест с mocha всегда возвращает ошибку, когда я пытаюсь создать новый экземпляр и сохранить его в db.Sequelize.js возвращает ошибку при создании экземпляра
Модель:
//db is a global instance of the sequelize pool connection
var sequelize = require('sequelize');
var users = db.define('users', {
uuid: {
type: sequelize.STRING(36),
allowNull: false,
unique: true,
validate: {
isUUID: 4
}
},
username: {
type: sequelize.STRING(100),
allowNull: false,
unique: 'idxProvUsr'
}
}, {
freezeTableName: true
});
module.exports = users;
Контроллер:
var usersDB = require('../models/users');
var sequelize = require('sequelize');
var usersCtrl = {
userCreate: function (userData, callback) {
var test = usersDB.build(userData);
test.save()
.then(function (data) {
callback(true, data);
})
.catch(function (error) {
if (error) {
callback(false, error);
}
});
},
};
module.exports = usersCtrl;
Тест:
'use strict';
var chai = require('chai');
var uuid = require('node-uuid');
var userCtrl = require('../app/controllers/users');
var userData = {
uuid: null,
username: 'manuerumx'
};
describe('Users Controller', function(){
it('Fails add new User', function(done){
userCtrl.userCreate(userData, function(isOk, response){
chai.expect(isOk).to.equal(false);
done();
});
});
it('Add new User', function(done){
userData.uuid = uuid.v4();
userCtrl.userCreate(userData, function(isOk, response){
chai.expect(isOk).to.equal(true);
done();
});
});
});
Первые модульные тесты нормально. Экземпляр не добавляется, потому что требуется поле uuid.
Вторая проблема. Экземпляр добавляется в базу данных, но команда поймать возвращение всегда та же ошибка:
{ [AssertionError: expected true to equal false]
message: 'expected true to equal false',
showDiff: true,
actual: true,
expected: false }
Уже протестирована с теми же результатами:
usersDB.build(userData).save().then(...).catch(...);
usersDB.create(userData).then(...).catch(...);
Что я делаю неправильно? Это потому, что я использую обещания с обратными вызовами?
Не является проверкой isUUID, я уже пытаюсь ее удалить.
Тилов, вы правы. Тестирование модуля теперь работает. Большое спасибо. – manuerumx