2013-04-23 2 views
0

Я написал небольшой скрипт, который загружает мои тесты SpecRunner.html (тесты на жасмин) с диска. Хотя все выглядит нормально, тесты не выполняются. Вот мой код:тесты модуляции жасмина не выполняются в скрипте phantomjs

var page = require('webpage').create() 
    , file = "./SpecRunnerCoverage.html" ; 

page.open(file, function (status) { 
    var json = page.evaluate(function() { 
     return window._yuitest_coverage; 
    }); 

    console.log(JSON.stringify(json)); 
    phantom.exit(); 
}); 

Это выполняется следующим образом:

$> phantomjs myScript 

Из данных покрытия кода я могу сказать ни один тест не был выполнен. В любом случае я могу выполнить эти тесты?

Большое спасибо

UPDATE: Я просто заметил, что когда я обернуть вокруг SetTimeout функции оценки и задержать весь процесс, это работает. Есть ли лучшее решение, чем setTimeout?

ответ

1

Процесс загрузки жасмина запускает тесты, когда вызывается window.onload, поэтому ваши спецификации не обязательно будут завершены к моменту вызова обратного вызова загрузки фантомной страницы. Используя setTimeout, вы разрешаете время для запуска тестов в браузере после загрузки страницы. setTimeout все еще может быть хрупким, потому что, когда вы добавляете больше спецификаций, время, необходимое для запуска вашего полного пакета, изменится, и ваша текущая продолжительность таймаута может оказаться недостаточной для завершения набора.

Если ваш проект может иметь зависимости от рубина, вы можете использовать jasmine ruby gem. Драгоценный камень включает в себя задачу рейка rake jasmine:ci, которая запустит сервер с вашими тестами и использует фантом для загрузки страницы и дождитесь завершения всех спецификаций и распечатает неудачи в командной строке.

Смежные вопросы