Я пишу простые модульные тесты с помощью sinon.JS. Код испытуемого имеют некоторую проверку типа, который бросает TypeError:Sinon's spy.threw() не ведет себя так, как ожидалось, передавая ему аргумент ошибки?
Tx = class Tx {
constructor(date) {
if (!(date instanceof Date)) throw new TypeError();
this.date = date;
}
}
В моем test.js, я использую Sinon, чтобы проверить, что конкретизация Tx терпит неудачу, когда аргумент не дата:
describe('Tx', function() {
describe('#constructor', function() {
it('should fail when not passed a date as 1st param', function() {
var txSpy = sinon.spy(Tx.constructor);
try {
tx = new Tx(true);
} catch (e) {
// test success
console.log('Error: '+e)
}
}
}
}
result = txSpy.threw(new TypeError());
assert(result);
Утверждение терпит неудачу, даже если выход catch является «Error: TypeError»; Тот же результат возникает при передаче строкового описания типа ошибки (т. Е. «TypeError», согласно the sinon API).
Любые подсказки? Заранее спасибо :)
Я думал, что это может быть так ... но тогда как бы я проверил на равенство типов, а не на равенство экземпляров? – Navonod
@Navonod Я отредактировал в том, что выглядит как лучший способ, но вы должны знать, что я никогда не использовал 'sinon'. Хотя я думаю, что мой ответ должен решить вашу непосредственную проблему, он может не сработать для некоторых угловых случаев или просто не будет лучшей практикой. – Aaron