2013-12-01 6 views
4

Выполнение следующих тестов Mocha в браузере работает, но когда я использую grunt mocha в командной строке, я получаю Warning: PhantomJS timed out. Я превратил файл gruntfile mocha.options.run в false, потому что, если true, requirejs не имеет времени для запуска.Создание grunt-mocha работает с requirejs

К сожалению, я не могу найти полный образец по этому вопросу.

gruntfile содержит:

mocha: { 
    test: { 
    src: ['tests/index.html'] 
    }, 
} 

index.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 
    <title>Mocha Test</title> 
    <link rel="stylesheet" href="../node_modules/mocha/mocha.css" type="text/css" charset="utf-8" /> 
</head> 
<body> 
    <div id="mocha"></div> 

    <script src="../node_modules/mocha/mocha.js" type="text/javascript" charset="utf-8"></script> 
    <script type="text/javascript" charset="utf-8"> 
     mocha.setup('bdd'); 
    </script> 

    <script src="../node_modules/chai/chai.js" type="text/javascript" charset="utf-8"></script> 
    <script type="text/javascript" charset="utf-8"> 
     var expect = chai.expect; 
    </script> 

    <script data-main="requireRunner.js" src="../vendor/require-2.1.9.js"></script> 
</body> 
</html> 

requireRunner:

require.config({ 
    baseUrl: '/', 
    paths: { 
    'jquery'  : '../vendor/jquery-2.0.3', 
    'underscore' : '../vendor/underscore-1.5.2', 
    'backbone'  : '../vendor/backbone-1.1.0' 
    }, 
    shim: { 
    underscore: { 
     exports: '_' 
    }, 
    backbone: { 
     deps: [ 
     'underscore', 
     'jquery' 
     ], 
     exports: 'Backbone' 
    } 
    }, 
    urlArgs: 'bust=' + (new Date()).getTime() 
}); 

require([ 
    'tests/models/todoTest' 
    ], mocha.run 
); 

todoTest

define(['js/models/todo'], function(Todo) { 
    describe('Todo', function(){  

     var todo; 
     before(function() { 
      todo = new Todo(); 
     }) 

     it('defaults are ok', function(){ 
      expect(todo.get('title')).to.equal(''); 
      expect(todo.get('completed')).to.be.false; 
     }) 
    }) 
}) 

список задачи

/*global define*/ 
define([ 
    'underscore', 
    'backbone' 
], function (_, Backbone) { 
    'use strict'; 

    var TodoModel = Backbone.Model.extend({ 
     // Default attributes for the todo 
     // and ensure that each todo created has `title` and `completed` keys. 
     defaults: { 
      title: '', 
      completed: false 
     } 
    }); 

    return TodoModel; 
}); 
+1

Мне нелегко также пытаться запустить mocha с requirejs, тесты работают в браузере, но не в командной строке, где они не выполняются, правда, странно. – Puigcerber

+0

, пожалуйста, посмотрите на мой собственный ответ, я использовал журнал: true в бегуне mocha и требует отладочных трассировок. –

ответ

2

Несколько маленьких вещи, чтобы заставить его работать правильно:

  • путь кажется более терпимы в браузере, проблема пути может происходить только на хрюкать-мокко (это не проблема , просто напоминание)
  • работает grunt mocha не хватает, grunt server mocha путь, сервер должен быть до
  • использованием options:{log: true} в сочетании с requirejs debugging traces в index.html - хорошая справка
1

Ваше сообщение помогло мне настроить мою задачу для ворча-мокки! Thx

Я был де превратить ложь в mocha.options.run, в противном случае хрюкать-мокко не обрабатываются никаких проверок (догадка requirejs не было времени для загрузки, как вы сказали)

однако у меня не было, чтобы настроить любой сервер чтобы он работал. Запуск grunt mocha достаточно много!

index.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>FdP - Tests</title> 
    <link rel="stylesheet" href="../app/vendor/mocha/mocha.css"/> 
</head> 
<body> 
<div id="mocha"></div> 
<script src="../app/vendor/mocha/mocha.js"></script> 
<script src="../app/vendor/chai/chai.js"></script> 
<script> 
    mocha.setup('bdd'); 
    chai.should(); 
</script> 
<script data-main="specRunner.js" src="../app/vendor/requirejs/require.js"></script> 
</body> 
</html> 

мой мокко задача

mocha: { 
    test: { 
    src: ['test/index.html'] 
    } 
} 

specRunner.js

... 
function (testSuite) { 
    'use strict'; 
    require(testSuite.specs, function() { 
     mocha.run(); 
    }); 
... 

версия Grunt-мокко: 0.4.7

+0

Yup: вам не нужен сервер, ваши проверенные файлы должны быть доступны. В моем случае, по причинам xhr, я обслуживаю их через узел/connect/grunt server, вот и все: D –

0

Я думаю, что может быть т вот некоторые файлы включают в себя ошибку в тестовом html-файле. вы можете перейти в папку вашего html-файла, дважды щелкнуть файл, если тестовый сценарий может нормально работать в браузере, тогда grunt-mocha может запустить его тоже. Итак, возможно, проблема в том, что require.js не найден.

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