Я использую QUnit для проверки функции, которая вызывает ошибку в случае недопустимых входов. I am способен проверить эту функцию, вставив ее в анонимную функцию, но не уверен, почему это необходимо. Если я не делаю этого, сообщает QUnit:QUnit завершается, когда функция с аргументами arg исключается, если она не обернута в функцию anon
Died on test #4 at http://localhost:8000/qunit/throwsTest.js:1:7: sometimesThrows
Следует отметить, что это сообщение включает выброшенные ошибки.
Я также заметил, что могу выполнять функции, которые не требуют работы args, если я передаю функцию как аргумент, а не вызываю его.
Отъезд my fiddle для просмотра в прямом эфире.
QUnit.test("throws test", function(assert) {
function alwaysThrows() { throw "alwaysThrows"; }
function sometimesThrows(foo) {
if (foo) {
return true;
}
else {
throw "sometimesThrows";
}
}
assert.throws(alwaysThrows, "alwaysThrows throws (works)")
assert.ok(sometimesThrows(true), "sometimesThows doesn't throw (works)");
assert.throws(function() {
sometimesThrows(false);
}, "sometimesThrows throws inside anonymous function (works)");
// Where the unexpected behavior occurs.
// The error _is_ being thrown being thrown.
assert.throws(sometimesThrows(false), "sometimesThrows throws (terminates)");
});
Если упаковка функции, которая будет испытаны в анонимной функции является предполагаемым способом для получения этой работы, если кто-то может объяснить, почему , я обнаружил бы, что освещая в развитии своей интуиции.
Это имеет смысл. Большое спасибо за разъяснение поведения! –