tap.throws () не работает при вызове с прототипно унаследованной функцией? - PullRequest
0 голосов
/ 17 октября 2018

Я использую функции конструктора с прототипным наследованием для создания небольшой библиотеки.Я пытаюсь проверить, что один из методов выдает ошибку.

Пример кода:

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.

Есть идеи, что здесь происходит и как написать проходной тест?

...