Как использовать информацию о тестируемом приложении в комплекте Jasmine? - PullRequest
0 голосов
/ 10 апреля 2019

Я пишу автоматизацию 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, предназначенную для этой цели? Я просмотрел их документацию, но не нашел ничего подходящего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...