2

Я знаю, что тесты e2e для углового имеют перед каждым для отдельных тестов ... но я ищу уровень для всего набора. Кто-нибудь знает, как запустить блок кода до того, как будет запущен весь тестовый пакет?Угловая e2e/Karma - Перед комплектом Suite?

ответ

1

Если вы не возражаете блок бежится для каждого теста в Вашем наборе вы можете вложить ваши тесты и имеют beforeEach на самом высоком уровне, например,

describe("Entire Suite", function() { 

    beforeEach(function(){ 
    // Executed for every it in the entire suite 
    }); 

    it('Test', function() { 
    // Only the first beforeEach will be called prior to this test. 
    }); 

    describe("Subset Suite", function(){ 

    beforeEach(function(){ 
     // Executed for every it in this subset suite 
    }); 

    it('Subtest', function() { 
     // Both beforeEach blocks will have been called prior to this test. 
    }); 
}); 

Однако главный beforeEach будет выполнять перед каждым его блоком во всем пакете. Если вы хотите, чтобы код выполнялся только один раз, это не решение для вас.

3

мне нужно сделать это, чтобы запустить кучу тестов, необходимых пользователю войти в систему, так что я создал файл karma.suiteInitialize.js с помощью следующего кода:

(function() { 
    'use strict'; 

    angular 
     .module("app") 
     .run(testInitialize); 

    testInitialize.$inject = ['userService']; 

    function testInitialize(userService) { 
     userService.setUser({ UserName: 'Test user'}); 
     // if (userService.isLogged()) 
     //  console.log("Test user logged in"); 
    } 
})(); 

, а затем просто добавить его в karma.config.js сразу после файлы приложений, такие как:

files: [ 
     '../Scripts/angular.js', 
     '../Scripts/angular-mocks.js', 
     '../Scripts/angular-route.js', 
     '../Scripts/angular-filter.js', 
     '../Scripts/angular-resource.js', 
     '../Scripts/angular-scroll.min.js', 
     'app/app.module.js', 
     'app/**/*.js', 
     'karma.suiteInitialize.js', 
     'tests/**/*.js', 
     'app/**/*.html' 
    ] 

..и это все, что нужно. Это не уменьшает количество вызовов для входа пользователя в систему (это все равно происходит для каждого теста), но это делает его удобным.