Mam funkcję, która próbuje parsować parametr jako obiekt JSON. Jeśli się nie uda, zamiast tego używa zastępczego.Spróbuj/złap z jaśminem
analizy:-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!');
Nie widzę żadnego problemu w tym kodzie. Jednak gdy próbuję dodać kilka testów jednostkowych (przy użyciu Jasmine 2.3) w przypadku "catch", Jasmine przechwytuje błąd analizy składowej JSON i przerywa test:
Na przykład dla testu jaśminowego, takiego jak :
describe('parseCode', function() {
it('Parses a string', function() {
var code = 'My code without JSON';
expect(parseCode(code)).toThrow();
});
});
lub nawet test jak:
describe('usingJSONFallback', function() {
it('Throw an error if there is a string', function() {
var code = 'My code without JSON';
expect(usingJSONFallback(code)).toThrow();
});
});
W obu przypadkach test nie powiedzie się i powraca:
SyntaxError: Unable to parse JSON string
Czytałem o rzucaniu kontrolowanych wyjątków za pomocą throw Error(...)
, ale ostatecznie nie pasuje to do mojego przypadku. Wszelkie sugestie dotyczące używania Jasmine w tym przypadku?