node js chai mocha“ReferenceError:找不到变量require”

时间:2015-02-09 09:25:12

标签: node.js gruntjs mocha chai

我正在使用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>

有人可以告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您的单元测试有require('../index')行,但问题是您的测试将在浏览器环境中运行,该环境没有本机require函数(因此{{1} })。如果您需要包含单独的文件,可以使用"requirejs"库( 用于浏览器)。或者您可以在HTML文件中使用ReferenceError标记?或者只是一个简单的Ajax调用......