У меня есть простая функция, такая как;Sinon to unit test 'catch' statement
module.exports = {
fetchUser:function(myUserId) {
return new Promise((resolve, reject) => {
this.getUser(myUserId)
.then(user => {
// do logic // then return user
return user;
})
.then(resolve)
.catch(err => {
// whoops there has been an error
let error = { error: 'My Error' };
reject(error);
});
});
}
};
Я хочу модульного тестирования как результат resolve
и reject
.
Простой тест chai
будет;
var expect = require('chai').expect;
var user = require('./user');
describe('User module', function() {
it('test fetchUser', function() {
let _user = user.fetchUser('abc123');
return _user
.then(user => {
expect(data).to.be.an('object');
});
});
sinon
Используя или другую библиотеку, как я могу для функции fetchUser
бросить эту reject
ошибку?
Спасибо. Если я настрою тест таким образом, он на самом деле никогда не вводит мой код catch? Заглушка просто подделывает ответ, чтобы соответствовать ошибке, выброшенной из моего улова. – sketchthat
Да, он входит в оператор 'catch', поскольку ошибка равна' {error: 'My Error'} '. Что вам нужно больше, чтобы доказать, что он работает? –
Спасибо, я просто проверял, я еще не совсем понял заглушки. Я проверю это. – sketchthat