Ответ 1
Прежде всего, для написания более чистых тестов и лучшего понимания того, из чего состоит ваш целевой сайт, примените шаблон объекта страницы и разделить части ваших веб-страниц на разные объекты страницы. Например, footer
, header
могут и должны быть отдельными объектами страниц, которые будут повторно использоваться на разных веб-страницах вашего сайта.
Подробнее о теме:
- Использование объектов страницы для организации тестов
- Объекты страницы-экспонента (учебное пособие, очень подробно)
- PageObject (Martin Fowler)
- Использование объектов страницы для преодоления недостатков транспортитора
Насколько я понимаю, чтобы следовать принципу "СУХОЙ", вы хотите иметь какие-то "общие" спецификации жасмина, которые вы можете определить один раз и запустить в нескольких тестовых наборах.
Это именно то, что Сушка Jasmine Specs with Shared Behavior описывает статью. Идея довольно проста - определить функцию с вашими наборами тестов внутри и вызвать ее из других наборов тестов. Пример:
-
создать функцию, которая принимает объект контекстной страницы, и содержит специальные повторные тесты нижнего колонтитула:
function testFooter(footer) { describe("(shared)", function () { describe("should show footer with necessary information", function () { it("should show copyright", function () { expect(footer.copyright.getText()).toEqual('Copyright 2014'); }); }); }); }
-
вызов функции из других тестовых наборов, передающих объект страницы контекстного нижнего колонтитула:
var FooterPage = require('./footer.po.js'); describe('Contacts page', function () { var scope = {}; beforeEach(function () { browser.get('/contacts/'); browser.waitForAngular(); scope.page = new ContactsPage(); }); // other contacts page specific suites // ... testFooter(new FooterPage()); });
Вам может потребоваться настроить и улучшить код, чтобы он работал, но идея остается прежней: определите один раз и повторно используйте. Прохождение объектов страницы просто делает его более чистым и прозрачным.
Также смотрите: