Неблокирующие асинхронные тесты с использованием QUnit

Кажется, что функции QUnit stop() и start() позволяют ждать асинхронных тестов, но в течение этого периода ожидания весь набор тестов зависает. Есть ли способ запустить асинхронные тесты неблокирующим образом с помощью QUnit?


person Randomblue    schedule 08.12.2011    source источник


Ответы (1)


Глядя на документы для asyncTest и stop, есть две причины, по которым я вижу, что он настроен именно так.

  1. Чтобы вы случайно не запускали одновременно два теста, которые могут с чем-то конфликтовать (например, модифицировать DOM и, таким образом, изменять результаты тестов друг друга).
  2. Так что QUnit знает, когда тесты закончились. Если дойдет до конца всех синхронных тестов, то он запишет результаты, чего вы на самом деле не хотите, если в фоновом режиме все еще выполняются асинхронные тесты.

Так что это хорошо, и вы, вероятно, не хотите, чтобы асинхронные тесты не блокировались во время их выполнения. Вероятно, вы могли бы сделать это, вызвав start сразу после начала ваших асинхронных тестов, но помните, что JavaScript на самом деле является однопоточным (хотя иногда он создает видимость многопоточности), поэтому это может привести к неожиданным результатам, как вы можете. не гарантирует, что ваш асинхронный тест будет продолжать работать... это может быть (вероятно, не будет) до тех пор, пока другие тесты не будут завершены и результаты не будут опубликованы.

person Nathan MacInnes    schedule 16.12.2011