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