Я работаю над проектом JavaScript и изо всех сил пытаюсь пройти финальный модульный тест, который по существу проверяет, выдает ли моя функция ошибку, если заданный ввод неверен.Для некоторого фона это функция, которая имеет дело с разрешениями пользователя и может проверять, могут ли определенные разрешения быть предоставлены или отклонены с учетом определенных предварительных условий.
Я могу пройти все тесты в отношении вывода функций, но у меня проблемы с обработкой ошибок.Мне говорят, что я не выкидываю ошибку, несмотря на то, что я неоднократно проверял себя, действительно ли выдается ошибка.Я приложу изображения, чтобы проиллюстрировать проблему как можно лучше.
Во-первых, объект ошибки, который я пытаюсь вызвать, определен ниже:
function InvalidBasePermissionsError() {
this.name = 'InvalidBasePermissionsError';
this.message = "Invalid Base Permissions";
this.stack = Error().stack;
}
InvalidBasePermissionsError.prototype = Object.create(Error.prototype);
Моя функция, которая не проходит тест на выброс ошибки, выглядит следующим образом:
PermissionDependencyResolver.prototype.canDeny = function (existing, permToDeny) {
try {
if (!pdr.checkValid(existing)) {
throw new InvalidBasePermissionsError;
}
else {
var tempArr = existing
var required = [];
for (var i = 0; i < tempArr.length; i++) {
var current_dependency = this.adjList[existing[i]];
required.push.apply(required, current_dependency)
};
if (required.includes(permToDeny)) {
return false;
} else {
return true;
}
}
}
catch (e) {
console.log(e.message)
}
};
Странно то, что когда я консоль регистрирую функцию следующим образом:
pdr.canDeny(['create', "delete"], 'audit')
Я получаю правильную строку «Неверные базовые разрешения», напечатанную на консоли, см. image1 .Что еще более странно, так это то, что когда я запускаю тесты, я вижу, что то же самое сообщение об ошибке регистрируется непосредственно над сообщением «Неудачный тест», что кажется противоречивым, см. image 2 .Возможно ли, что Mocha (тестовый фреймворк) не улавливает мою обработку ошибок;или я допустил ошибку в своей функции и неправильно ее генерирую?
Рассматриваемые тесты следующие:
it('throws an exception when validating permissions if existing permissions are invalid', function(){
pdr = new PermissionDependencyResolver(complexPermissionDependencies)
expect(function () { pdr.canGrant(['edit', 'create'], 'alter_tags') }).toThrowError("Invalid Base Permissions")
expect(function () { pdr.canGrant(['view', 'delete'], 'alter_tags') }).toThrowError("Invalid Base Permissions")
expect(function () { pdr.canDeny(['create', 'delete'], 'audit') }).toThrowError("Invalid Base Permissions")
})
Возможно ли, что Mocha (структура теста)не улавливает мою обработку ошибок;или я допустил ошибку в своей функции и не выдает ошибку надлежащим образом?
Опять же, когда я вручную регистрирую консоль в каждом из тестируемых случаев, все они выдают сообщение об ошибке «Недопустимые базовые разрешения», как и ожидалось.,Однако по какой-то причине тесты говорят мне, что ничего не выбрасывается.
Любые идеи относительно того, что может быть причиной этого, будут огромной помощью, так как я не знаю, каков источник ошибки.Это Mocha, JS, мой синтаксис try / catch или какой-то другой вопрос.Любая помощь очень ценится.
Спасибо!