2013-04-03 2 views
5

У меня возникла проблема при попытке настроить PhantomJS, поэтому я мог бы выполнять непрерывную интеграцию в моем проекте JavaScript через Travis CI.QUnit + PhantomJS: asyncTest никогда не возвращается

В принципе, даже самый простой asyncTest просто никогда не возвращается. Он отлично работает при тестировании с node или в браузере, таком как Chrome.

Мои asyncTest выглядит следующим образом:

asyncTest ("async test", function() { 
    expect(1); 
    console.log("Beginning test..."); 
    setTimeout(function() { 
     ok(true, "true is true"); 
     start(); 
     console.log("Test should now end..."); 
    }, 200); 
}); 

Я создал репозиторий с минимальным кодом, чтобы воспроизвести проблему:

https://github.com/siovene/phantomjs-async-test

Я был бы признателен за любую помощь!

+0

Это работает, если вы используете другой метод асинхронизации, чем 'setTimeout'? Так же просто, как функция обратного вызова? – Odi

+0

Нет, такая же проблема. Первоначально я нашел проблему в своем коде, которая использовала функцию обратного вызова, но чтобы сделать минимальный пример, я использовал 'setTimeout'. –

ответ

1

Salvatore,

Адрес эл. Я нашел проблему в пределах qunit-logging.js. Когда я удалил это из вашего index.html, тесты прошли нормально.

Вот что я сделал, чтобы запустить QUnit внутри phantomjs. \

  • Я закомментировал QUnit-logging.js ссылки.
  • Я загрузил плагин runner.js из дерева QUnit: https://github.com/jquery/qunit/tree/master/addons/phantomjs
  • Я положил, что в том же каталоге, что и основные файлы (в моем случае это был C: \ Temp \ qunit_test).
  • Я побежал это из моей командной строки:

C: \ TEMP \ qunit_test> C: \ фантом \ phantomjs.exe runner.js файла: /// C:/Temp/qunit_test/индекс. html

Results: 
Beginning test... 
Test should now end... 
Took 2045ms to run 1 tests. 1 passed, 0 failed. 

Кроме того, я обновил источники qunit для запуска из cdn. Я не мог сказать, какую версию вы использовали (с 2012 года это все, что я мог сказать), и я хотел устранить неисправность с последней версией. Итак, вот мой файл index.html:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Test Suite</title> 

     <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 

    </head> 
    <body> 
     <div id="qunit"></div> 
     <div id="qunit-fixture"></div> 

      <!-- qunit --> 
     <link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.12.0.css" type="text/css" media="screen" /> 
     <script src="http://code.jquery.com/qunit/qunit-1.12.0.js"></script> 
     <!--<script src="qunit-logging.js"></script>--> 

     <script type='text/javascript'> 
      module("lib-test"); 

      asyncTest ("async test", function() { 
       expect(1); 
       console.log("Beginning test..."); 
       setTimeout(function() {   
        start(); 
        ok(true, "true is true"); 
        console.log("Test should now end..."); 
       }, 2000); 
      });  

     </script> 

    </body> 
</html> 
Смежные вопросы