Я использую функции конструктора с прототипным наследованием для создания небольшой библиотеки.Я пытаюсь проверить, что один из методов выдает ошибку.
Пример кода:
function Thing() {
this.x = 'ok'
}
Thing.prototype.trySomething = function() {
throw new Error('test error')
}
const thing = new Thing()
tap.throws(function() { throw new Error('before')}) // this is fine
tap.throws(thing.trySomething()) // urgh
tap.throws(function() { throw new Error('after')}) // never runs
Похоже, что нажатие просто выдает ошибку из trySomething
.Выполнение тестов дает мне следующие результаты:
ok 1 - expected to throw
not ok 2 - test error
И тест 3. не запускается.
Я использую нод-тап (https://github.com/tapjs/node-tap).
t.throws (fn, [ОжидаемыйError], сообщение, дополнительные)
Ожидайте, что функция выдаст ошибку. Если имеется ожидаемая ошибка, то также убедитесь, что сгенерированная ошибка соответствует ожидаемой ошибке.
но, похоже, то же самое происходит с нативным assert
.
Есть идеи, что здесь происходит и как написать проходной тест?