Подтвердить что ты не робот

Жасмин запускает тест три раза

Я запускаю тесты Karma/Jasmine/Angular 2.0 на своем компьютере для разработки. Совсем недавно Жасмин на моей машине для разработки решила запустить мои тесты три раза. Да, ровно три раза, каждый раз.

При первом запуске все проходит как положено. Однако на втором и третьем проходе все одно и то же не получается. Он всегда признает, что есть 7 тестов, но проходит 21, и 10 не пройдены (первоклассная математика в окне)????

Это также не работает на Travis с SauceLabs. (Примечание: это ссылка на старую сборку с 3-мя тестами, но с 9-ю тестами и 5-ю неудачей???)

У меня есть скриншот, файл karma.conf.js и один пакет, с которого все началось. Любая помощь с благодарностью.


Culprit [TypeScript] (удалите это, и проблема будет решена в моем окне разработки):

Полный источник

describe('From the Conductor Service', () => {
    let arr: Array<ComponentStatusModel> = null;
    let svc: ConductorService = null;

    beforeEach(() => {  
        arr = [/* Inits the array*/];
        svc = new ConductorService();
    });

    describe('when it is handed a container to hold objects which need loaded', () => {
        // More passing tests...

        /// vvvvv The culprit !!!!!
        describe('then when you need to access the container', () => {
            beforeEach(() => {
                svc.loadedContainer = arr;
            });

            it('it should always be available', () => {
                assertIsLocalDataInTheService(arr, svc.loadedContainer);
            });
        });
        /// ^^^^^ End of culprit !!!!!
    });

    // More passing tests...
});

Неудачные тесты:

Tests are ran three times

Скриншоты браузера:

Не уверен, что это связано, но до того, как произойдут все ошибки, стек вызовов Jasmine меньше (слева, соблюдайте полосу прокрутки). После того, как ошибки начинаются, стек просто увеличивается с повторяющимися вызовами к одним и тем же функциям (верно, обратите внимание на полосу прокрутки).

Jasmine Call Stack

Неправильный набор люксов:

В моем тесте файлы спецификаций Nanobar и Conductor совершенно разные. Тем не менее, вы можете видеть, что в массиве suites содержатся данные из спецификаций Nanobar и Conductor. Каким-то образом Жасмин смешала эти два спецификационных файла вместе (после того, как все начало сбоить) и привела к тому, что мои операторы description() не имели смысла при публикации на консоли.

Jasmine Suite Stack

Упрощенный karma.conf.js:

Полный источник

module.exports = function (config) {
    config.set({
        autoWatch: false,
        basePath: '.',
        browsers: ['Chrome'],
        colors: true,
        frameworks: ['jasmine'],
        logLevel: config.LOG_INFO,
        port: 9876,
        reporters: ['coverage', 'progress'],
        singleRun: true,

        coverageReporter: {
            // Code coverage config
        },

        files: [
            // Loads everything I need to work
        ],

        plugins: [
            'karma-chrome-launcher',
            'karma-coverage',
            'karma-jasmine'
        ],

        preprocessors: {
            'app/**/*.js': ['coverage']
        },

        proxies: {
            // Adjust the paths
        }
    })
}
4b9b3361