Squirejs приводит к тому, что случайные тесты периодически терпят неудачу или вообще не запускаются

Мы используем Karma и Mocha вместе со Squire для имитации зависимостей, загруженных с помощью RequireJ. Без Squire наши тесты работают нормально, но как только мы инициализируем объект Squire, все начинает ломаться:

define(['squire'], function (Squire) {
    var injector = new Squire(); // comment this out and everything works again
});

Мы обнаружили, что иногда Karma сообщала, что тесты не выполнялись (даже если точки останова, установленные внутри тестовых функций, срабатывали), а иногда сообщала о случайных ошибках, которые не должны были привести к сбою. Карма просто сходит с ума.

Как мне использовать Squire, чтобы мои тесты не сошли с ума?


person ajbeaven    schedule 20.06.2013    source источник


Ответы (1)


Хорошо, я решил эту проблему, обнаружив случайную проблему с github. Мой файл Karma test-main.js загрузил тесты и выполнил обратный вызов следующим образом:

var tests = Object.keys(window.__karma__.files).filter(function (file) {
    return /Spec\.js$/.test(file);
});

requirejs.config({
    // ... more code here

    // ask Require.js to load these files (all our tests)
    deps: tests,

    // start test run, once Require.js is done
    callback: function () {
        mocha.setup('bdd');
        mocha.ignoreLeaks();
        mocha.run();
    }
});

Теперь вместо определения зависимостей и обратного вызова в requirejs.config я добавил следующий код в конец test-main.js:

// load all tests
require(tests, function () {
    // start test run once requirejs is done
    mocha.setup('bdd');
    mocha.ignoreLeaks();
    mocha.run();
});

И все снова работает плавно! Большое спасибо @FabienDeshayes на GitHub за это.

person ajbeaven    schedule 20.06.2013