2013-01-08 13 views
10

Używam Yeoman do rusztowania mojego projektu. Jest wyposażony w kilka poręcznych rzeczy, w tym biegacz testowy z serii PhantomJS.Testy Mokki z Yeomanem i PhantomJS

Mój problem polega na tym, że chociaż moje testy działają poprawnie w przeglądarce, przestają działać, próbując uruchomić je za pomocą PhantomJS w CLI.

Oto jak moja próba index.html wygląda następująco:

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

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

Teraz, kiedy robię yeoman test, otrzymuję to:

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. 

Jak powiedziałem , yeoman server:test pokazuje moje twierdzenia poprawnie w br Owser.

Używam Yeoman 0.9.6 i PhantomJS 1.7.0. Każda pomoc jest doceniana.

Odpowiedz

3

Jaka jest twoja konfiguracja mocha w Gruntfile. Czy masz coś takiego:

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

Jest to domyślne, generowane przez 'Yeoman init'. To znaczy - 'mocha: { wszystkie: ['test/**/*. Html'] },' –

+0

To sprawiło, że zadziałało to dla mnie, ale od pierwszej próby. Więcej szczegółów tutaj - https://github.com/yeoman/yeoman/issues/719 –

+0

Oto działa szablon: https://github.com/roblevintennis/yeoman_requirejs_template – Rob

4

Rozwiązałem ten sam ostrzeżenia przez dwukrotne sprawdzanie ścieżkę do mocha w 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

Nadal mam 'mocha.js' odwoływany w html, nie zmieniło to dla mnie. Nie używam szkieletu do mojego projektu. –

+1

W moim przypadku założyłem, że Yeoman zainstaluje Mocha, gdy uruchomię oryginalny generator webapp. Po sprawdzeniu mojej ścieżki indeksu i wskazaniu jej, zobaczyłem, że jej brakuje. 'bower install mocha' naprawił mnie. – austin