2013-04-03 6 views
5

Ich bin auf ein Problem gestoßen, als ich versucht habe, PhantomJS einzurichten, damit ich über Travis CI eine kontinuierliche Integration in mein JavaScript-Projekt durchführen kann.QUnit + PhantomJS: asyncTest gibt nie zurück

Grundsätzlich wird auch die einfachste asyncTest einfach nie zurückgegeben. Es funktioniert gut, wenn es mit node oder in einem Browser wie Chrome getestet wird.

Meine asyncTest sieht wie folgt aus:

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); 
}); 

Ich habe ein Repository mit dem minimalen Code festgelegt, um das Problem zu reproduzieren:

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

ich jede Hilfe dankbar würde!

+0

Funktioniert es, wenn Sie eine andere Async-Methode als 'setTimeout' verwenden? Genauso einfach wie eine Callback-Funktion? – Odi

+0

Nein, dasselbe Problem. Ursprünglich fand ich das Problem in meinem Code, der eine Callback-Funktion verwendete, aber um ein minimales Beispiel zu geben, benutzte ich 'setTimeout'. –

Antwort

1

Salvatore,

Hey. Ich habe festgestellt, dass das Problem in der Datei qunit-logging.js liegt. Als ich das aus Ihrer index.html entfernte, liefen die Tests gut.

Hier ist, was ich tat das QUnit innerhalb PhantomJS auszuführen. \

  • bemerkte ich aus der QUnit-logging.js Referenz.
  • Ich habe die runner.js vom QUnit Baum Plugin: https://github.com/jquery/qunit/tree/master/addons/phantomjs
  • ich im selben Verzeichnis wie die Hauptdateien setzen, dass (in meinem Fall war es c: \ temp \ qunit_test).
  • Ich lief diese dann von meiner Kommandozeile:

C: \ temp \ qunit_test> c: \ Phantom \ phantomjs.exe runner.js file: /// C:/temp/qunit_test/index. html

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

Auch habe ich die qunit Quellen aktualisiert, um von der CDN zu laufen. Ich konnte nicht sagen, welche Version du benutzt hast (es ist von 2012 her, was ich sagen konnte), und ich wollte mit der neuesten Version Fehler beheben. Also hier ist meine index.html Datei:

<!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>