在 QUnit 中断言异常
Asserting an exception in QUnit
我正在进行单元测试,测试从语法生成的解析器代码。 (通过 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 断言,我不明白的是我不知道如何给出这个 specific 解析函数的断言。任何帮助表示赞赏。
编辑: 我在 QUnit 网站上尝试了很多建议的方法,但仍然无法弄清楚如何正确测试该特定异常。
我成功地测试了异常,如果有人感兴趣,我会分享答案
QUnit.test("Invalid string input throws SyntaxError", function (assert) {
assert.throws(
function () {
DurationParser.parse(new String(''));
},
function (error) {
return error.name === "SyntaxError";
}
);
});
QUnit 网站一点帮助也没有,我只是尝试了这种语法的不同变体才弄明白的。
我正在进行单元测试,测试从语法生成的解析器代码。 (通过 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 断言,我不明白的是我不知道如何给出这个 specific 解析函数的断言。任何帮助表示赞赏。
编辑: 我在 QUnit 网站上尝试了很多建议的方法,但仍然无法弄清楚如何正确测试该特定异常。
我成功地测试了异常,如果有人感兴趣,我会分享答案
QUnit.test("Invalid string input throws SyntaxError", function (assert) {
assert.throws(
function () {
DurationParser.parse(new String(''));
},
function (error) {
return error.name === "SyntaxError";
}
);
});
QUnit 网站一点帮助也没有,我只是尝试了这种语法的不同变体才弄明白的。