0
新しいインスタンスを作成してdbに保存しようとすると、mochaのユニットテストでエラーが返されるという問題があります。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();
});
});
});
最初のユニットテストはOKです。 uuidフィールドが必要なため、インスタンスは追加されません。
第2は、問題です。インスタンスは、データベースに追加されますが、常にキャッチ命令リターン同じエラー:私が間違ってやっている何
usersDB.build(userData).save().then(...).catch(...);
usersDB.create(userData).then(...).catch(...);
:
{ [AssertionError: expected true to equal false]
message: 'expected true to equal false',
showDiff: true,
actual: true,
expected: false }
は、すでに同じ結果でテスト?私はコールバックで約束を使用しているからですか?
isUUID検証ではありません。すでに削除しようとしています。
Tilov、あなたは正しいです。単体テストは現在動作しています。どうもありがとう。 – manuerumx