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と、次のエラー メッセージが表示されます。

エラー: モジュール名 "sinon-chrome" はコンテキスト用にまだロードされていません: _. require([]) を使用する

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

file:///c:/dev/extensions/NEW_EXPRESS/node_modules/requirejs/require.js:1 の defaultOnError で file:///c:/dev/extensions/NEW_EXPRESS/node_modules/requirejs/require.js の onError で:file:///c:/dev/extensions/NEW_EXPRESS/node_modules/requirejs/require.js の localRequire では 547: file:///c:/dev/extensions/NEW_EXPRESS/node_modules/requirejs/require の requirejs では 1433 .js:1794

4

2 に答える 2

1

エラー メッセージのリンクでは、非同期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);
        });
    })
});
于 2016-12-01T09:48:39.770 に答える