Я знаю, что в тестах e2e для angular есть beforeEach для отдельных тестов... но я ищу уровень для всего набора. Кто-нибудь знает способ запустить блок кода до того, как будет выполнен весь набор тестов?
Angular e2e/Karma — Перед блокировкой Suite?
Ответы (2)
Мне нужно было сделать это, чтобы запустить кучу тестов, требующих входа пользователя в систему, поэтому я создал файл 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'
]
..и это было все, что нужно. Это не уменьшает количество вызовов для входа пользователя в систему (это все еще происходит для каждого теста), но делает его удобным.
person
tarrball
schedule
29.05.2015
Если вы не возражаете против запуска блока для каждого теста в вашем наборе, вы можете вложить свои тесты и иметь 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.
});
});
Тем не менее, main beforeEach будет выполняться перед каждым блоком it во всем наборе. Если вы хотите, чтобы код выполнялся только один раз, то это не решение для вас.
person
lorcan
schedule
11.09.2013