Я знаю, что тесты e2e для углового имеют перед каждым для отдельных тестов ... но я ищу уровень для всего набора. Кто-нибудь знает, как запустить блок кода до того, как будет запущен весь тестовый пакет?Угловая e2e/Karma - Перед комплектом Suite?
2
A
ответ
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'
]
..и это все, что нужно. Это не уменьшает количество вызовов для входа пользователя в систему (это все равно происходит для каждого теста), но это делает его удобным.