2013-06-09 4 views
1

Я писал несколько тестов angularjs, используя Jasmine Framework. Я запутался в документации на сайте JasmineЖасмин не обнаруживает ошибки в Try/Catch

согласовань В «toThrow» является для тестирования, если функция генерирует исключение

Жасмин будет проходить следующий тест, если я не обернуть тело из submission.save в Try/улове

it("should not save to server if user is invalid", function() { 
    userServiceMock.user.id = false; 
    expect(function() { 
     submissionService.save(submission); 
    }).toThrow(); 
    userServiceMock.user.id = 15; 
}); 

Я не думаю, что это хорошая практика, чтобы бросить ошибки без оговорки улова. Поэтому я должен неправильно писать этот тип теста. Надеюсь, кто-то сможет это прояснить.

Я использую gruntjs и grunt-karma для запуска моих тестов.

ответ

1

Вы проверите, что ваша функция вызовет ошибку. Для этого вы не можете установить блок, который будет вызывать ошибку в try catch/block, поэтому в эту функцию не возникает ошибка, даже если она была выбрана функцией, вызываемой вашей функцией.

Что jasmine does, чтобы поймать ошибку в toThrow согласовани и тест будет передавать только когда catch блока в согласовани называл:

try { 
     actual(); 
    } catch (e) { 
     threw = true; 
     thrown = e; 
    } 
+0

Итак мой фактический код не должен быть обернут в попытке/конструкция уловов? – user2108258

+0

Да, ошибка должна быть уловкой из набора жасмина, иначе тест не удастся. –

+0

Так что я закончу тем, что комментирую свой блок try/catch для тестирования и удаляю комментарий для выполнения actucl ?? – Sreevisakh

Смежные вопросы