Транспортир Jasmine описывает блоки, вложенные в IT-блок
во-первых, приведенный ниже код, кажется, работает. Тем не менее, я еще не видел, чтобы кто-то делал это, поэтому мне интересно, является ли это законным, и если я упускаю непредвиденные недостатки.
контекст заключается в том, что я пишу тест E2E с транспортиром, который использует блоки описания/it в стиле Jasmine. Моя цель-загрузить страницу и запустить кучу it
проверяет блоки без перезагрузки этой страницы каждый раз (потому что это занимает много времени).
конструкция у меня есть:
describe("Homepage", function () {
beforeEach(function () {
browser.get("/"); //loads the page
});
it('elements', function () {
describe('test group', function () {
it('test 1', function () {
//run stuff 1
});
it('test2', function () {
//run stuff 2
});
})
});
});
Я понимаю, что альтернатива просто сделать это:
describe("Homepage", function () {
beforeEach(function () {
browser.get("/"); //goes to homepage
});
it('elements', function () {
//run stuff 1
//run stuff 2
});
});
но проблема в том, что я не могу разделить тесты, и вы в конечном итоге с большим it
заблокировать. Я хочу как-то избежать проблемы запуска beforeEach каждый раз, но все равно иметь красиво разделенные тестовые блоки.
кстати, я тоже пробовал это:
describe("Homepage", function () {
browser.get("/"); //goes to homepage
it('elements', function () {
//run stuff 1
//run stuff 2
});
});
кроме того, это не работает, когда у вас есть несколько спецификаций, как это. Этот браузер.get () все запускаются один за другим до запуска тестов.
2 ответов
разбиение утверждений на меньшие блоки it-определенно хорошая идея. Жасмин не appead иметь глобальную функцию установки, который запускается только один раз. Поэтому, возможно, вы можете обмануть блок beforeEach, запустив установку только один раз:
describe("Homepage", function() {
var pageLoaded = false;
beforeEach(function() {
if ( ! pageLoaded) {
browser.get("/");
pageLoaded = true;
}
});
});