3

У меня есть эта gulp задача:Тестирование хром расширение - требуется ошибка

gulp.task('test', function() { 
    return gulp.src('test/runner.html') 
     .pipe(mochaPhantomJS()); 
}); 

Это мой runner.html:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Mocha</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <link rel="stylesheet" href="../node_modules/mocha/mocha.css" /> 
    </head> 
    <body> 
     <script src="../node_modules/mocha/mocha.js"></script> 
     <script>mocha.setup('bdd')</script> 
     <script src="../node_modules/chai/chai.js"></script> 
     <script src="../node_modules/requirejs/require.js"></script> 

     <script> 
      var assert = chai.assert; 
      var expect = chai.expect; 
      var should = chai.should(); 
     </script> 
     <script src="spec/test.js"></script> 
     <script> 
      if (window.mochaPhantomJS) { 
       console.log('Running mochaPhantomJS...'); 
       mochaPhantomJS.run(); 
      } else { 
       console.log('Running mocha...'); 
       mocha.run(); 
      } 
     </script> 
    </body> 
</html> 

А вот мой test.js файл:

var chrome = require('sinon-chrome'); 
var popup = require('../../source/scripts/popup'); 

describe('sumit', function(){ 
    before(function() { 
     global.chrome = chrome; 
    }); 
    it('Should return 1', function(){ 
     assert(popup.sum(0,1) === 1); 
    }); 
}) 

Но когда Я запускаю gulp test Я получаю это сообщение об ошибке:

Error: Module name "sinon-chrome" has not been loaded yet for context: _. Use require([])

http://requirejs.org/docs/errors.html#notloaded

in defaultOnError at file:///c:/dev/extensions/NEW_EXPRESS/node_modules/requirejs/require.js:1 in onError at file:///c:/dev/extensions/NEW_EXPRESS/node_modules/requirejs/require.js:547 in localRequire at file:///c:/dev/extensions/NEW_EXPRESS/node_modules/requirejs/require.js:1433 in requirejs at file:///c:/dev/extensions/NEW_EXPRESS/node_modules/requirejs/require.js:1794

+0

Пожалуйста [править] вопрос быть по теме: включать в себя ** ** полный [mcve], дублирующий проблема. Включая * manifest.json *, некоторые из фоновых * и * скриптов содержимого. Вопросы, требующие помощи по отладке («** почему этот код не работает? **)) должны включать: ► желаемое поведение, ► конкретную проблему или ошибку * и * самый короткий код, необходимый для его воспроизведения ** в вопросе сам**. Вопросы без четкого описания проблемы не полезны другим читателям. Смотрите: «** Как создать [mcve] **», [о каких темах я могу спросить здесь?] (Http://stackoverflow.com/help/on-topic) и [ask]. – Makyen

+1

Ссылка в ошибке означает, что вы должны использовать метод async require. I.e 'require (['sinon-chrome'], function (chrome) { // все остальное в test.js });' Вы по-прежнему получаете ту же ошибку даже при внесенных изменениях? – dan

ответ

1

В link in the error message, это означает, что вы должны использовать метод асинхронной require.

Так что, если вы обновляете test.js к следующему, то он должен решить эту проблему:

require(['sinon-chrome'], function (chrome) { 
    var popup = require('../../source/scripts/popup'); 

    describe('sumit', function(){ 
     before(function() { 
      global.chrome = chrome; 
     }); 
     it('Should return 1', function(){ 
      assert(popup.sum(0,1) === 1); 
     }); 
    }) 
}); 
+0

Или вы можете поместить 'popup = require ('../../ source/scripts/popup');' внутри обратного вызова 'before()' внутри 'describe()'. –