Я пишу автоматизацию Jasmine для приложения, созданного с помощью организации, состоящей из раздела / главы / раздела (модули состоят из глав, главы состоят из разделов). Все подразделения должны иметь одинаковое количество глав, а все главы должны иметь одинаковое количество разделов, но я знаю, что некоторые главы и разделы еще не существуют.
В настоящее время у меня есть что-то вроде этого:
for(var u = 0; u < NUM_UNITS; u++) {
// navigate to Unit u
for(var c = 0; c < NUM_CHAPTERS; c++) {
// navigate to Chapter c
for(var s = 0; s < NUM_SECTIONS; s++) {
// navigate to Section s
// run test specs
}
}
}
Чтобы разрешить мне вызывать it()
в этих циклах for()
, я обернул функции, которые должны вызываться, например:
function checkNumSections(chapNum, secCount) {
it('has ' + secCount + ' sections in chapter ' + chapNum, async function(done) {
var numSections = await pageObjectLib.countSections();
expect(numSections).toBe(secCount);
done();
}
}
Это работает как ожидалось.
То, что я хочу сделать, это использовать результат в цикле for()
, например:
for(var c = 0; c < NUM_CHAPTERS; c++) {
// navigate to Chapter c
checkNumSections();
if(/* expect within checkNumSections failed */) { // <-- SETTING / CHECKING THIS EXPECTATION IS WHAT MY PROBLEM IS
// wrong number of sections, can't loop over them
// skip to next chapter
continue;
}
for(var s = 0; s < NUM_SECTIONS; s++) {
// navigate to Section s
// run test specs
}
}
Однако я не видел в Жасмине способа получить результат такого теста.
По сути, если в главе содержится неправильное количество разделов, я хочу, чтобы это было отмечено вызовом checkNumSections
, и пропускаю циклы по ним, поскольку у меня нет хорошего способа определить, какой из них отсутствует, и выяснить это выходит за рамки этого вопроса.
Я пробовал:
- устанавливает переменную в пределах
checkNumSections()
относительно правильности количества секций и проверяет ее значение в приведенном выше выражении if()
. Это не сработало, поскольку оператор if()
выполнялся до того, как переменной было присвоено значение.
- вызов
pageObjectLib.countSections().then(numSections => {...})
, где в данный момент находится оператор if()
. Это также не работало, так как вызывалось еще до загрузки приложения.
Кто-нибудь знает другой подход или функцию в Jasmine, предназначенную для этой цели? Я просмотрел их документацию, но не нашел ничего подходящего.