Как протестировать библиотеку представлений в intern.js?

Я создаю библиотеку, которая использует основу в качестве основы. В моей библиотеке есть класс View, который является расширением Backbone.View. Он имеет HTML-элемент как свойство. У меня есть куча новых функций в представлении, и я хочу протестировать их с помощью стажера.

Проблема в том, что я не могу найти способ сослаться на DOM из самого стажера. Единственный способ, которым я вижу, чтобы это работало, - это открыть удаленный URL-адрес отдельной HTML-страницы и запросить этот DOM с помощью leadfoot. Этот метод кажется отличным для веб-сайта, на котором вы переходите на определенные страницы, чтобы протестировать свой сайт, но я пытаюсь создать библиотеку, поэтому кажется ненужным иметь отдельные страницы только для тестирования основных функций библиотеки.

Есть ли способ протестировать библиотеку представлений, не помещая весь ваш код в фиктивные html-файлы для открытия с помощью leadfoot?


person Nick Manning    schedule 17.02.2017    source источник


Ответы (1)


Конечно, у вас есть несколько вариантов, оба из которых предполагают написание модульных тестов (не функциональных тестов). Один из них — запускать модульные тесты в браузере напрямую с помощью Intern client.html, другой — запускать их в браузере с помощью WebDriver (intern-runner).

Ваши модульные тесты будут загружать любые классы, которые вы пытаетесь протестировать, создавать их экземпляры, делать утверждения и т. д. Поскольку ваши модульные тесты будут выполняться в браузере, они будут иметь доступ к DOM.

Обратите внимание, что ваши тесты не будут загружать тестовые страницы, они будут загружать модули кода. Таким образом, тест может выглядеть примерно так:

define([
    'intern!object', 'intern/chai!assert', 'app/View'
], function (registerSuite, assert, View) {
    var view;

    registerSuite({
        name: 'app/View',

        afterEach: function () {
            // cleanup the view after each test
            view.remove();
            view = null;
        },

        someTest: function () {
            var view = new View();
            // run tests on the view
        }
});

Чтобы запустить тесты с помощью WebDriver, укажите его в suites, а не functionalSuites в своей внутренней конфигурации, затем запустите Intern в режиме веб-драйвера (intern-runner или intern run -w).

Чтобы запустить тесты в клиенте браузера, запустите статический сервер в каталоге вашего проекта (intern serve при использовании intern-cli), откройте браузер и перейдите к http://localhost:<port>/node_modules/intern/client.html?config=tests/intern (при условии, что ваша тестовая конфигурация находится в tests/intern.js).

person jason0x43    schedule 18.02.2017
comment
Работает отлично! Спасибо! - person Nick Manning; 18.02.2017