После каждого помощью QUnit, еще после каждой асинхронной
Поскольку start (), stop () будут удалены в Qunit 2.0, какова альтернатива асинхронным настройкам и разрывам с помощью методов beforeEach, afterEach? Например, если я хочу, чтобы beforeEach ждал, пока обещание будет закончено?
3 ответа:
Кунит в основном хочет, чтобы люди перестали использовать глобальные методы (не только
start()
иstop()
, но иtest()
,expect()
, и т.д.). Таким образом, начиная с версии 1.16.0, вы всегда должны использовать либо глобальное пространство имен (QUnit
), либо аргумент APIassert
, передаваемый в функцииtest()
. Это включает в себя новый асинхронный элемент управления :QUnit.test( "testing async action", function( assert ) { // <-- note the `assert` argument here var done = assert.async(); // tell QUnit we're doing async actions and // hold onto the function it returns for later setTimeout(function() { // do some async stuff assert.ok( true, "This happened 100 ms later!" ); done(); // using the function returned from `assert.async()` we // tell QUnit we're don with async actions }, 100); });
Если вы знакомы со старым
start()
иstop()
способом делать вещи, вы должны видеть, что это чрезвычайно похоже, но более разделено и раздвижной.
поскольку вызов методаasync()
относится к аргументуassert
в тесте, он не может быть использован в функцииbeforeEach()
. Если у вас есть пример того, как вы делали это раньше, пожалуйста, опубликуйте его, и мы можем попытаться выяснить, как сделать это по-новому.Обновить
Моя ошибка ранее, Объект
assert
передается вbeforeEach
иafterEach
обратные вызовы модулей, так что вы должны быть в состоянии сделать ту же логику, что вы сделали бы для тест:QUnit.module('set of tests', { beforeEach: function(assert) { var done = assert.async(); doSomethingAsync(function() { done(); // tell QUnit you're good to go. }); } });
(проверено в QUnit 1.17.1)
Видя, что никто не ответил на часть beforeEach/afterEach: набор тестов должен запускаться сразу после загрузки страницы. Когда это не сразу возможно, то прибегают к настройке QUnit:
QUnit.config.autostart = false;
И продолжайте настройку вашего набора тестов (инициализация тестов, подача их в QUnit, асинхронное ожидание загрузки некоторых компонентов, будь то AJAX или что-то еще), Вашего сайта и, наконец, когда он будет готов, просто запустите:
QUnit.start();
Доксайт Кунита имеет его покрытый.