У меня есть функция, которая пытается проанализировать параметр как объект JSON. Если он не удался, вместо этого он использует резервную копию.Try/catch with jasmine
разбора code.js
function parseCode(code) {
try {
usingJSONFallback(code);
} catch() {
usingStringFallback(code);
}
}
function usingJSONFallback(code) {
JSON.parse(code);
//...more code here
}
function usingStringFallback(code) {
//... more code here
}
main.js
//Some code...
parseCode('hello world!');
Я не вижу какой-либо проблемы в этом коде. Тем не менее, когда я пытаюсь добавить некоторые модульные тесты (используя Jasmine 2.3) для случая «catch», Жасмин улавливает ошибку анализа JSON самостоятельно и отменяет тест:
Например, для теста Jasmine, такого как :
describe('parseCode', function() {
it('Parses a string', function() {
var code = 'My code without JSON';
expect(parseCode(code)).toThrow();
});
});
или даже испытание, как:
describe('usingJSONFallback', function() {
it('Throw an error if there is a string', function() {
var code = 'My code without JSON';
expect(usingJSONFallback(code)).toThrow();
});
});
В обоих случаях тест не пройден и возвращает:
SyntaxError: Unable to parse JSON string
Я читал о том, чтобы сбрасывать контролируемые исключения с помощью throw Error(...)
, но окончательно это не подходит для моего дела. Любые предложения о том, как использовать Жасмин в этом случае?