Я пишу тестовый пакет, который проверяет функции возврата обещаний. Одной из распространенных тем этих тестов является необходимость проверить, правильно ли функция возврата обещаний выдает ошибку при передаче недопустимых аргументов. Я пробовал использовать should.throws, но просматривая код, я вижу, что он не предназначен для работы с обещаниями.Существует ли функция tojs, которая имитирует should.throws для обещаний?
Я сделал следующую функцию полезности, чтобы получить необходимую мне функцию:
var TestUtil = module.exports;
var should = require('should');
/**
* Checks if a promise chain throws an error, and optionally that the error includes
* the given errorMsg
* @param promise {String} (optional) error message to check for
* @param errorMsg
*/
TestUtil.throws = function(promise, errorMsg) {
return promise
.then(function(res) {
throw new Error(); // should never reach this point
})
.catch(function(e) {
if (errorMsg) {
e.message.should.include(errorMsg);
}
should.exist(e);
});
};
существует ли функция shouldjs, что делает это то же самое? Я хотел бы, чтобы мои тесты были согласованными, используя только ifjs api для проверки, а не используя эту одноразовую функцию.
Не .rejectedWith является то, что вы смотрел? –
Я думаю, вам нужно использовать ['.then (..., ...)' вместо '.then (...) .catch (...)'] (http://stackoverflow.com/q/24662289/1048572) Вот? – Bergi