Вопрос:
Я использую Chai для проведения тестов, и мне кажется, что я застрял на тестировании ожидаемой ошибки:
Чай ожидал, что [Функция] выдаст (ошибку)
Текущий код:
Вот код теста:
describe('Do something', function () {
it('should remove a record from the table', function (done) {
storage.delete(ID, done);
});
it('should throw an error when the lookup fails', function () {
expect(storage.delete.bind(storage, ID)).to.throw('Record not found');
});
});
Вот код функции:
delete: function (id, callback) {
// Generate a Visitor object
visitor = new Visitor(id);
/* Delete the visitor that matches the queue an
cookie provided. */
tableService.deleteEntity(function (error, response) {
// If successful, go on.
if (!error) {
// Do something on success.
}
// If unsuccessful, log error.
else {
if (error.code === 'ResourceNotFound') {
throw new Error('Record not found');
}
// For unexpected errros.
else {
throw new Error('Table service error (delete): ' + error);
}
}
if (callback) callback();
});
},
Попытки решения:
Я пробовал несколько вариантов вызова функции ожидания (включая вызов анонимной функции:
expect(function() {storage.delete(ID);}).to.throw('Record not found');
Свяжите, как показано в примере,
и основной из
expect(storage.delete(ID)).to.throw('Record not found');
Я также попытался заменить параметр throw из 'Record not found' на несколько вещей, включая направление ввода на уже созданную ошибку (Error) и создание новой ошибки в параметре (new Error ('Record not found')) ;
Возможные причины:
У меня есть подозрение, что ошибка не возникает, потому что тесту требуется некоторое время, чтобы связаться с базой данных для удаления записи, однако я не уверен, как я могу это исправить.
Вдобавок кажется, что тест, который запускается сразу после этого, на самом деле возвращает ошибку, которая должна была быть возвращена в ЭТОМ тесте.
tableService.deleteEntity
синхронно? - person zerkms   schedule 09.03.2015tableService.deleteEntity
никогда не вызывает исключения. Это вложенный обработчик, который работает асинхронно. - person zerkms   schedule 09.03.2015Q
илиBluebird
- person zerkms   schedule 09.03.2015