Следуя аналогичному шаблону this example Я пытаюсь проверить свои маршруты в приложении Express.js, но я не могу заставить своего шпиона проверить, что res.render
был вызван при упаковке в promise.then
.Тестирование Express.js res.render в рамках обещания с шпионами Mocha & Sinon
Вот упрощенный пример, где я ожидал бы, что calledOnce
будет правдой, но возвращает false.
Код тестируемой:
var model = {
get: function() {
return new Promise(function(res, rej) {
return res('success');
});
}
};
module.exports = function (req, res) {
model.get().then(function (data) {
res.render('home', data);
}).catch(function (err) {
console.log(err);
});
};
Тест:
var expect = require('chai').expect;
var sinon = require('sinon');
var home = require('./home');
describe('home route', function() {
it('should return a rendered response', function() {
var req = {};
var res = {
render: sinon.spy()
};
home(req, res);
expect(res.render.calledOnce).to.be.true;
});
});
Спасибо, что это решить мою проблему ! – chrisdwheatley