После каждого помощью 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();Доксайт Кунита имеет его покрытый.