Запуск асинхронных тестов QUnit из Ant в PhantomJS - PullRequest
0 голосов
/ 28 февраля 2012

Я пытаюсь получить набор асинхронных тестов QUnit для запуска из скрипта сборки Ant, используя PhantomJS . То, что у меня есть, похоже, работает, но, похоже, должен быть более хороший способ добиться этого.

Сценарий (упрощенный), который запускается при загрузке PhantomJS, выглядит следующим образом:

var page = require("webpage").create();

page.onConsoleMessage = function(msg) {
    if(msg.indexOf("FINISHED") > -1) {
        var failed = msg.split(" ");
        phantom.exit(failed[1]);
    }
};

page.open("testrunner.html", function() {
    page.evaluate(function() {
        QUnit.done = function(result) {
            console.log("FINISHED " + result.failed);
        };
    });
});

Загружает файл, содержащий тесты (testrunner.html). Он использует метод PhantomJS evaluate для запуска некоторого кода в контексте загруженной страницы. Этот код связывает обработчик события с событием QUnit done. В обработчике событий все, что происходит, это простой вызов console.log.

PhantomJS по умолчанию ничего не делает с вызовами console.log, поэтому я также связал обработчик событий с событием PhantomJS onConsoleMessage. Когда выполняется вызов console.log в обработчике события QUnit.done, запускается событие onConsoleMessage. Если консольное сообщение соответствует заданной строке, то мы знаем, что тесты завершены. Затем мы можем выйти из PhantomJS с кодом завершения, равным количеству неудачных модульных тестов (это используется скриптом Ant для определения того, была ли эта часть сборки успешной).

У меня вопрос: есть ли лучший способ узнать, когда завершены модульные тесты?

1 Ответ

0 голосов
/ 02 марта 2012

Вы проверили Quanit Runner, который предоставляется на фантомном js webiste?https://github.com/ariya/phantomjs/blob/1.2/examples/run-qunit.js

По сути, вы просто указываете это на свою тестовую страницу qunit (testrunner.html), и она очищает страницу, чтобы увидеть, что что-то не так, и выводит результаты на консоль.Вы можете изменить его для печати в файл, который затем может быть интегрирован в ваш скрипт сборки.

...