Тестирование AngularJS E2E: как выполнить код один раз (как beforeEach)
Я запускаю тесты E2E на сайте AngularJS, используя Karma и angular-сценарий.
Я выполняю некоторый код входа в beforeEach
функционировать перед каждым it
блок.
Моя функция входа в систему имеет задержку по таймауту, чтобы гарантировать, что вход в систему завершается правильно. Это отнимает много времени и неэффективно (не говоря уже о не элегантности). Кроме того, пользователь будет входить в систему только один раз во время сеанса, так что это будет более точно моделировать мой сценарий.
То, что я ищу, это before
функция, которая выполняет вход в систему только один раз для коллекции it
блоки, содержащиеся в describe
блок, но эта возможность, кажется, не существует (я проверил документы и исходный код).
Кажется очевидным требованием для библиотеки тестирования! Кто-нибудь решил эту проблему?
1 ответ
Вы могли бы использовать переменную флаг? например:
var bdone = false;
describe('Search POC', function() {
beforeEach(function() {
if (!bdone) {
browser().navigateTo('login');
console.log('navigated once');
bdone = true;
}
});
it ('should have an img link on the login results', function() {
expect(element('a:last').html()).toMatch(/jpg/);
});
it ('should redirect to user details when clicked', function() {
element('#UserThumbImage:first').click();
expect(browser().window().href()).toMatch(/user/);
});
});