Неблокирующие асинхронные тесты с использованием QUnit - PullRequest
4 голосов
/ 08 декабря 2011

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

1 Ответ

8 голосов
/ 16 декабря 2011

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

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

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

...