Ошибка:
TypeError: ctr.getCaracteristiques.then is not a function
Просто верно.Вы пропустили ()
при вызове метода getCaracteristiques()
.
Это должно работать:
return ctr.getCaracteristiques().then(function(data){
expect(data).to.be.a('array');
});
Редактировать после комментария OP:
В вашем коде getCaracteristiques
требуется объекты req
и res
.Я предполагаю, что вы используете express или любую другую библиотеку js http узла, которая обычно заполняет это для вас.
В mocha мы вызываем метод сами, без какого-либо веб-сервера,поэтому нам нужно создать эти объекты самим.
Метод getCaracteristiques
не использует req
, но ему нужен res
, чтобы иметь метод json()
.Таким образом, мы можем сделать:
const res = {
json: (a) => a,
};
return ctr.getCaracteristiques({}, res).then(function(data){
expect(data).to.be.a('array');
});
В нашем тесте getCaracteristiques
возвращает то, что нам нужно (только данные, потому что метод fake json
просто возвращает свой параметр).
Теперь тест снова не пройден, потому что getCaracteristiques
не возвращает вызов json
.Если мы добавим оператор return
, все должно работать:
exports.getCaracteristiques = (req,res) => {
return db.query('SELECT "CARACT_ID", "CARACT_LIB", "COULEUR", "IMAGE_ACTIVE",
"IMAGE_PASSIVE", "ACTIF" FROM "DIM_PRC_CARACT"')
.then( ({rows}) => {
var caracteristiqueResult = rows.map((row) => {
return {
'idCaracteristique': row.CARACT_ID
, 'libelleCaracteristique': row.CARACT_CD
, 'libelleCaracteristique': row.CARACT_LIB
, 'couleurCaracteristique': row.COULEUR
, 'pictogrammeActifCaracteristique': row.IMAGE_PASSIVE
, 'pictogrammePassifCaracteristique': row.IMAGE_PASSIVE
};
})
return res.json(caracteristiqueResult);
})
Обратите внимание, что return
был добавлен к db.query
и res.json
, поэтому метод getCaracteristiques
теперь возвращаетобещание о характере.