Tôi có một hàm cố gắng phân tích một tham số dưới dạng đối tượng JSON. Nếu nó thất bại, nó sử dụng một dự phòng thay thế.Thử/bắt với hoa nhài
phân tích cú pháp-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!');
Tôi không nhìn thấy bất kỳ vấn đề trong mã này. Tuy nhiên, khi tôi đang cố gắng thêm một số bài kiểm tra đơn vị (sử dụng Jasmine 2.3) cho trường hợp 'bắt', Jasmine tự mình lấy lỗi phân tích cú pháp JSON và hủy thử nghiệm:
Ví dụ, đối với thử nghiệm Jasmine như :
describe('parseCode', function() {
it('Parses a string', function() {
var code = 'My code without JSON';
expect(parseCode(code)).toThrow();
});
});
hoặc thậm chí là một thử nghiệm như:
describe('usingJSONFallback', function() {
it('Throw an error if there is a string', function() {
var code = 'My code without JSON';
expect(usingJSONFallback(code)).toThrow();
});
});
Trong cả hai trường hợp, thử nghiệm thất bại và trả về:
SyntaxError: Unable to parse JSON string
Tôi đọc về ném ngoại lệ được kiểm soát bằng cách sử dụng throw Error(...)
, nhưng dứt khoát điều này không phù hợp tốt cho trường hợp của tôi. Bất kỳ đề xuất về cách sử dụng Jasmine trong trường hợp này?