node.js и mocha-qunit-ui: тест с асинхронными зависимостями requirejs

Сначала краткое описание: тест в следующем фрагменте никогда не выполняется:

setTimeout(function() {
    test("test", function() {
        ok(true, "okay");
    })
}, 1000);

Есть ли способ не запускать mocha-qunit-ui автоматически, а дождаться некоторых асинхронных обратных вызовов для создания тестов?


Итак, зачем мне это нужно?

Я пытаюсь запустить тесты в браузере для своих классов с помощью nodejs и mocha-qunit-ui. Классы загружаются асинхронно с помощью requirejs.

Итак, я мог бы создать такой тест:

test("test", function() {
    stop();
    requirejs(
        ['Dependency'],
        function(Dependency)
        {
            expect(1);
            var d = new Dependency();
            ok(d.test(), "test");
            start();
        }
    );
 }

Но я хочу запустить несколько тестов в одном классе с одинаковыми зависимостями, поэтому я подумал о создании тестового объекта.

var d = new Dependency();

вне теста. Но тогда тест был бы внутри асинхронного вызова и, следовательно, никогда не вызывался бы.


person Powerswitch    schedule 01.10.2014    source источник
comment
я надеюсь, что вы также можете создать тестовый объект внутри асинхронного вызова   -  person Manjunath Siddappa    schedule 02.10.2014
comment
Я вызываю функцию test внутри асинхронного вызова, но набор тестов завершается раньше, поэтому этот тест никогда не выполняется.   -  person Powerswitch    schedule 02.10.2014


Ответы (1)


Что ж, я не особенно хорошо знаком с плагином mocha-qunit-ui, но QUnit имеет объект конфигурации, который вы можете использовать, чтобы сказать ему не запускаться, пока вы не будете готовы (чтобы вы могли сначала загрузить все свои классы и т. д.):

<script src="path/to/qunit.js"></script>
<script>
QUnit.config.autostart = false; // be sure this is set BEFORE you add your actual tests
require(
    [ "whatever", "your", "dependencies", "are" ],
    function() {
        QUnit.start(); // tell QUnit you're ready to go
    }
);
<script>
person Jordan Kasper    schedule 07.10.2014
comment
Спасибо. Оказалось, я где-то установил autostart в true и забыл об этом. - person Powerswitch; 09.10.2014