Пытаясь выяснить, как сделать определенные операторы ожидания jasmine зависимыми от предыдущего оператора ожидания, я обнаружил, что до Jasmine 2.3.0 способа не было. (см. Остановить тест на жасмин после сбоя первого ожидания) Однако Jasmine 2.3 .0 добавил параметр stopSpecOnExpectationFailure
, который, если установлен в значение true, остановит тест при первом сбое.
Взволнованный этой перспективой, я изменил свой conf.js, включив в него опцию:
/*
* conf.js
*/
exports.config = {
framework: 'jasmine',
specs: ['search-spec.js'],
useAllAngular2AppRoots: true,
jasmineNodeOpts: {
stopSpecOnExpectationFailure: true
}
};
Но у меня это не сработало.
В моем тесте у меня было:
/**
* Test option from select element is selected
*/
function verifyOptionSelected(option) {
var myEl = $('select[value="' + option + '"]';
expect(myEl.isPresent()).toBe(true, 'Option, ' + option + ', is not a value in the dropdown list. (It might be the text.)');
expect(myEl.isSelected()).toBe(true, 'Option, ' + option + ', is not selected as expected.');
}
В приведенном выше коде будут предприняты попытки выполнения обоих операторов expect, но мне не нужно пытаться выполнить второе, если первое не сработает.
Кто-нибудь из вас понял это с жасмином?
(Да, я знаю о jasmine-bail-fast и protractor-fail-fast. Однако, на мой взгляд, использование встроенной функции - лучшее решение.)