Я работаю над модульным тестом, который проверяет сгенерированный код парсера на основе грамматики. (сгенерировано с помощью PegJS) Я почти закончил с большинством возможных случаев. Осталось 2-3 из них, и ожидается, что они вызовут исключение, но я не могу понять, как утверждать исключение.
(function () {
"use strict";
QUnit.module('durationTests');
QUnit.test('durationParseTest', function (assert) {
var dp1 = DurationParser.parse(new String('')); //this is the one that is expected to throw exception
var dp2 = DurationParser.parse(new String('P'));
var dp3 = DurationParser.parse(new String('P13MT2H'));
var dp4 = DurationParser.parse(new String('P2Y6M'));
assert.deepEqual(dp2,[]);
assert.deepEqual(dp3, [
{
"type": "M",
"val": 13
},
{
"type": "T"
},
{
"type": "H",
"val": 2
}
]);
есть много других случаев, но я включил только эти два, чтобы показать, как я их тестировал. Сейчас они работают нормально.
Что я не понимаю об утверждении QUnit throw, так это то, что я не знаю, как передать это утверждение этой специальной функции синтаксического анализа. Любая помощь приветствуется.
Изменить: Я пробовал многие из предложенных способов на веб-сайте QUnit, но до сих пор не могу понять, как правильно протестировать это конкретное исключение.