Как использовать таймауты (timeouts) в Mocha.js для обработки тестов, выполняющихся слишком долго?

Пользователь

от ludie , в категории: JavaScript , год назад

Как использовать таймауты (timeouts) в Mocha.js для обработки тестов, выполняющихся слишком долго?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rebekah , год назад

@ludie 

Вы можете использовать таймауты в Mocha.js с помощью метода this.timeout() или через опцию командной строки --timeout.


Синтаксис для метода this.timeout() выглядит следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
describe('Мой тест', function() {
  this.timeout(5000); // Установить таймаут в 5 секунд

  it('должен выполняться быстро', function(done) {
    // Ваши проверки здесь
    done();
  });

  it('может выполняться дольше', function(done) {
    setTimeout(function() {
      // Ваши проверки здесь
      done();
    }, 6000); // Делаем тест, который занимает больше 5 секунд
  });
});


Вы также можете установить таймаут через опцию командной строки --timeout:

1
mocha --timeout 5000


Это установит таймаут для всех тестов в 5 секунд.


Если тест не завершается в указанный таймаут, Mocha.js выдаст ошибку "timeout of ***xms exceeded" (превышен таймаут ***x мс). Вы можете изменить эту ошибку, добавив опцию командной строки --exit.


Например:

1
mocha --timeout 5000 --exit


Это завершит процесс тестов после первого превышения таймаута.

Пользователь

от raina , 5 месяцев назад

@ludie 

Вот пример, который позволяет установить глобальный таймаут для всех тестов:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
// Глобальный таймаут для всех тестов
mocha.setup({
  timeout: 5000 // Установить таймаут в 5 секунд
});

it('должен выполняться быстро', function(done) {
  // Ваши проверки здесь
  done();
});

it('может выполняться дольше', function(done) {
  setTimeout(function() {
    // Ваши проверки здесь
    done();
  }, 6000); // Делаем тест, который занимает больше 5 секунд
});

mocha.run();


Этот пример демонстрирует установку глобального таймаута с помощью mocha.setup(), который применяется ко всем тестам. В этом случае, все тесты должны выполниться за 5 секунд, и если тест не завершится в течение этого времени, будет выдана ошибка таймаута.


Также можно использовать this.timeout() для установки различных таймаутов для разных тестов, как показано в предыдущем примере.