После каждого помощью QUnit, еще после каждой асинхронной


Поскольку start (), stop () будут удалены в Qunit 2.0, какова альтернатива асинхронным настройкам и разрывам с помощью методов beforeEach, afterEach? Например, если я хочу, чтобы beforeEach ждал, пока обещание будет закончено?

3 3

3 ответа:

Кунит в основном хочет, чтобы люди перестали использовать глобальные методы (не только start() и stop(), но и test(), expect(), и т.д.). Таким образом, начиная с версии 1.16.0, вы всегда должны использовать либо глобальное пространство имен (QUnit), либо аргумент API assert, передаваемый в функции 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();

Доксайт Кунита имеет его покрытый.

Эмбер Кунит, когда-то существовавший beforeEach/setup, afterEach/teardown сосуществуйте некоторое время.

См. PR: https://github.com/emberjs/ember-qunit/pull/125