Есть ли способ пропустить все тесты в наборе, если определенные условия не срабатывают - JavaScript Jasmine?

Есть ли способ пропустить все тесты в наборе, если определенные условия не пройдут? Т.е.) если веб-страница не открывается, нет смысла запускать остальные тесты, потому что все они зависят от открытия веб-страницы до запуска каких-либо тестов.

Мы можем использовать pending(), чтобы пропустить текущий тест, но есть ли способ сразу же пропустить все тесты в наборе или тестах ниже, если все остальные тесты зависят от значения checkCondition?

Я попытался добавить pending() внутри блока beforeAll, чтобы попытаться пропустить все тесты, поскольку beforeAll запускается раньше чего-либо.

Пожалуйста помоги! Я использую WebdriverIO и Jasmine. Спасибо!

      let checkCondition = false;

describe(`My Test Suite`, () => {
  beforeAll(async () => {
    if (checkCondition) {
      console.log(`in true block`);
    } else {
      console.log('Skip tests below');  // HELP <-- since checkCondition is false, all tests below should fail 
      pending();
    }
  });

  it(`Test 1`, () => {
    if (checkCondition != undefined) {
      console.log("checkCOndition is defined")
    } else {
      pending();
    }
  });

  it(`Test 2`, () => {
    if (checkCondition) {
      // check 
    } else {
      console.log('Skip this test');
      pending();
    }
  });

  it(`Test 3`, () => {
    console.log("skip this test too")
  });

});

1 ответ

Если вам нужно установить checkConditionin, а затем, в конечном итоге, оттуда, кажется, что проблема с этим на github (https://github.com/jasmine/jasmine/issues/1533)

В противном случае, если checkConditon можно узнать до начала набора тестов (я не понимаю, почему), вы можете просто заменить свой beforeAll с чем-то вроде

      if (!checkCondition) return

Или просто пропустите весь звонок, чтобы describe в первую очередь

Другие вопросы по тегам