2013-01-08 12 views
10

Ich verwende Yeoman, um mein Projekt zu rüsten. Es kommt mit einigen handlichen Dingen, einschließlich einer PhantomJS-basierten Test-Runner.Mokka-Tests mit Yeoman und PhantomJS

Mein Problem ist, dass, während meine Tests im Browser korrekt ausgeführt werden, sie eine Zeitüberschreitung beim Versuch, sie mit PhantomJS in der CLI auszuführen.

Hier ist, wie mein Test index.html wie folgt aussieht:

<!doctype html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <title>Mocha Spec Runner</title> 
    <link rel="stylesheet" href="lib/mocha/mocha.css"> 
</head> 
<body> 
    <div id="mocha"></div> 
    <script src="lib/mocha/mocha.js"></script> 
    <!-- assertion framework --> 
    <script src="lib/chai.js"></script> 

    <!-- include source files here... --> 
    <script data-main="scripts/main" src="scripts/vendor/require.js"></script> 

    <script> 
    mocha.setup({ui: 'bdd', ignoreLeaks: true}); 
    expect = chai.expect; 
    should = chai.should(); 
    require(['../spec/map.spec'], function() { 
     setTimeout(function() { 
     require(['../runner/mocha']); 
     }, 100); 
    }); 
    </script> 

</body> 
</html> 

Hier map.spec.js:

require(['map'], function (Map) { 
    describe('Choropleth Map Generator', function() { 
    describe('Configure the map', function() { 
     it("should enforce mandatory parameters in the configuration", function() { 
     var config = {title: 'test configuration'}; 
     var map = new Map(config); 
     (function() { 
      map.getConfig(); 
     }).should.throw(Error); 
     }); 
    }); 
    }); 
}); 

Nun, wenn ich yeoman test tun, ich diese:

Running "server:phantom" (server) task 

Starting static web server on port 3501 

[...] 

Running "mocha:all" (mocha) task 
Testing index.html 
<WARN> PhantomJS timed out, possibly due to a missing Mocha run() call. Use --force to continue. </WARN> 

Aborted due to warnings. 

Wie gesagt , yeoman server:test zeigt meine Behauptungen korrekt in der br Owser.

Ich benutze Yeoman 0.9.6 und PhantomJS 1.7.0. Jede Hilfe wird geschätzt.

Antwort

3

Was ist Ihre Mokka-Konfiguration in Gruntfile. Haben Sie so etwas wie:

mocha: { 
    all: ['http://localhost:3501/index.html'] 
}, 
+0

Es ist die Standardeinstellung, die durch 'Yeoman init'. Das ist - 'Mokka: { alle: ['test/**/*. Html'] },' –

+0

Das hat es für mich funktioniert, aber vom ersten Versuch an. Weitere Details hier - https://github.com/yeoman/yeoman/issues/719 –

+0

Hier ist eine Arbeitsvorlage: https://github.com/roblevintennis/yeoman_requirejs_template – Rob

4

Ich löste die gleiche Warnung durch doppelte Kontrolle des Weges zu mocha in test/index.html

<link rel="stylesheet" href="lib/mocha/mocha.css"> 
</head> 
<body> 
    <div id="mocha"></div> 
    <script src="lib/mocha/mocha.js"></script> 
+0

ich noch 'mocha.js' im HTML-Code verwiesen haben, Das änderte nichts für mich. Ich verwende kein Backbone für mein Projekt. –

+1

In meinem Fall nahm ich an, dass yeoman Mocha installieren würde, wenn ich den ursprünglichen webapp Generator laufen ließ. Nachdem ich meinen Indexpfad überprüft und darauf hingewiesen hatte, sah ich, dass er fehlte. 'bower install mocha' reparierte mich. – austin