2013-03-27 6 views
10

У меня есть следующие testrunner.html:мокко инициализации тайм-аута с мокко-phantomjs

<html> 
    <head> 
    <title>Specs</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <link rel="stylesheet" href="/content/css/mocha.css" /> 
    <script> 
     function assert(expr, msg) { 
      if (!expr) throw new Error(msg || 'failed'); 
     } 
    </script> 

    <script src="/client/lib/require.js" type="text/javascript" data-main="/client/specs/_runner.js"></script> 

    </head> 
    <body> 
    <div id="mocha"></div> 
    </body> 
</html> 

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

// Configure RequireJS 
require.config({ 
    baseUrl: '/client', 
    urlArgs: "v=" + (new Date()).getTime() 
}); 

// Require libraries 
require(['require', 'lib/chai', 'lib/mocha'], function (require, chai) { 

    // Chai 
    assert = chai.assert; 
    should = chai.should(); 
    expect = chai.expect; 

    // Mocha 
    mocha.setup('bdd'); 


    // Require base tests before starting 
    require(['specs/stringcalculator.specs'], function (person) { 
     mocha.setup({ globals: ['hasCert'] }); 
     // Start runner 
     if (window.mochaPhantomJS) { 
      mochaPhantomJS.run(); 
     } 
     else { mocha.run(); } 
    }); 

}); 

StringCalculator.specs.js это:

define(['app/model/StringCalculator'], function() { 

    describe("StringCalculator", function() { 

     describe("when an empty string is passed in", function() { 
      it("returns 0", function() { 
       var result = StringCalculator.add(""); 
       assert(result === 0); 
      }); 
     }); 

     describe("when a number is passed in", function() { 
      it("returns the number", function() { 
       var result = StringCalculator.add("2"); 
       assert(result === 2); 
      }); 
     }); 

     describe("when string is passed in", function() { 
      it("returns NaN", function() { 
       var result = StringCalculator.add("a"); 
       assert(isNaN(result)); 
      }); 
     }); 

     describe("when '1,2' is passed in", function() { 
      it("returns 3", function() { 
       var result = StringCalculator.add("1,2"); 
       assert(result === 3); 
      }); 
     }); 
    }); 
}); 

И это это сам StringCalculator.js (из образцов мокко):

define([], function() { 
    window.StringCalculator = StringCalculator = { 
     add: function(inputString) { 
      if (inputString === '') { 
       return 0; 
      } 

      var result = 0; 
      var inputStrings = inputString.split(','); 

      for (var i = 0; i < inputStrings.length; i++) { 
       result += parseInt(inputStrings[i]); 
      } 

      return result; 
     } 
    } 
}); 

При запуске спецификаций в браузере, вызывающем testrunner.html, все работает должным образом. При запуске mocha-phantomjs client/specs/testrunner.html на OS X, я получаю следующее сообщение об ошибке:

Failed to start mocha: Init timeout

Что может я здесь отсутствует?

Я также пробовал mocha-phantomjs http://httpjs.herokuapp.com, который терпит неудачу с той же ошибкой.

Update: Если я звоню mocha-phantomjs http://localhost:81/client/specs/testrunner.html я также получаю следующее сообщение об ошибке на консоли:

RangeError: Maximum call stack size exceeded. 

http://localhost:81/client/lib/chai.js?v=123423553533535:2601 
Failed to start mocha: Init timeout 

ответ

1

This file показывает, как использовать его.

И для меня NodeJS 0.10.x, похоже, не работает с ним. После перехода на NodeJS 0.8.8 все работает так, как ожидалось.

Использование текущих версий mocha-phantomjs и PhantomJS теперь все работает нормально.

+0

Узел 0.10.x пользователи не полностью обескуражен - я уверен, что это было правдой в то время. Но сегодня я нахожусь на 0.10.13, и решение выше, чтобы использовать mochaPhantomJS.run(), работало для меня. – laurelnaiad

+0

Я все равно получаю случайные тайм-ауты время от времени (каламбур не предназначен). Использование последних mocha-phantomjs тоже и т. Д. С таймаутом 10000. – Till

9

Я получал то же самое Failed to start mocha Ошибка при запуске mocha-phantomjs через grunt-mocha-phantomjs npm упаковка. Найдено решение here.

Повторные здесь для справки:

Для запуска с мокко-phantomjs, изменить

mocha.run(); 

в

if (mochaPhantomJS) { 
    mochaPhantomJS.run(); 
} 
else { 
    mocha.run(); 
} 
+0

Привет, я тоже вижу эту проблему. Но я просто установил Mocha-phantomjs и phantomjs, используя npm. Я не знаю, где я могу найти SpecRunner.js и что именно он делает. Не могли бы вы объяснить? – EternallyCurious

+0

@EternallyCurious, я не уверен, что ваш вопрос находится в рамках этого. Открыть новый? – mnoble01

+0

Ссылка сейчас https://gist.github.com/michaelcox/3800736/#gistcomment-859304 (#comment изменен на #gistcomment) –

0

Спасибо за эту информацию, я попытался выше, но он не в браузере говоря: «mochaPhantomJS не определено». Быстрая подстройка в соответствии с ниже, и она хорошо работает:

if(typeof(mochaPhantomJS)!=="undefined") 
{ 
    mochaPhantomJS.run(); 
} 
else 
{ 
    mocha.run(); 
} 
Смежные вопросы