node js chai mocha ReferenceError: не удается найти требуемую переменную

Я использую grunt, mocha и chai для запуска базового модульного теста. Мой модульный тест выглядит следующим образом

describe('SPSearchConnection', function () {
describe('#performSearch()', function () {
    it('should return zero or more results', function () {
        var spSearchConnect = require('../index');
        alert(spSearchConnect);
        chai.assert.equal(-1, [1, 2, 3].indexOf(5));
    });
});
});

Теперь, когда я запускаю тест с помощью grunt "grunt", я получаю следующую ошибку:

ReferenceError: Can't find variable: require

Мой gruntfile.js выглядит так:

// Gruntfile.js
module.exports = function (grunt) {
grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    // Mocha
    mocha: {
        all: {
            src: ['tests/testrunner.html'],
        },
        options: {
            run: true
        }
    }
});

// Load grunt mocha task
grunt.loadNpmTasks('grunt-mocha');

grunt.registerTask('default', ['mocha']);

};

Мой файл testrunner.html выглядит так:

<html>
<head>
<meta charset="utf-8">
<title>Mocha Tests</title>
<link rel="stylesheet" href="../node_modules/mocha/mocha.css" />
</head>
<body>
<div id="mocha"></div>
<script src="../node_modules/mocha/mocha.js"></script>
<script src="../node_modules/chai/chai.js"></script>

<script>
    mocha.setup('bdd')
    mocha.reporter('html');
</script>

<!-- Tests -->
<script src="tests.js"></script>

<!-- Tests -->
<script></script>

<script>
    // Only tests run in real browser, injected script run if options.run == true
    if (navigator.userAgent.indexOf('PhantomJS') < 0) {
        mocha.run();
    }
</script>
</body>
</html>

Может кто-нибудь сказать мне, как это исправить, пожалуйста?


person user3547774    schedule 09.02.2015    source источник


Ответы (1)


В вашем модульном тесте есть строка require('../index'), но проблема в том, что ваш тест будет выполняться в среде браузера, в которой нет встроенной функции require (отсюда и ReferenceError). Если вам нужно включить отдельный файл, вы можете использовать библиотеку "requirejs" (которая является предназначен для браузеров). Или вы можете использовать тег <script> в своем HTML-файле? Или, может быть, просто вызов Ajax...

person Jordan Kasper    schedule 09.02.2015
comment
Используя requirejs, что я должен включить, чтобы сделать функцию require доступной? Можете ли вы дать мне рабочий образец. - person user3547774; 10.02.2015