我如何得到node.js&摩卡在浏览器中运行(测试)?

时间:2015-10-12 11:38:45

标签: javascript node.js testing mocha

在Win10.64中,我在命令行上运行了预期结果的测试:

>mocha test
   Array
     #indexOf()
       √ should return -1 when the value is not present
   1 passing (16ms)

但在Chrome中,控制台错误是:未捕获的ReferenceError:未定义require(匿名函数)@ test.lead-helper.js:1

test.lead-helper.js:

var assert = require("assert");

describe('Array', function() {
  describe('#indexOf()', function () {
    it('should return -1 when the value is not present', function () {
      assert.equal(-1, [1,2,3].indexOf(5));
      assert.equal(-1, [1,2,3].indexOf(0));
    });
  });
});

和HTML测试运行器:

<html>
  <head>
    <meta charset="utf-8">
    <title>Mocha Tests</title>
    <link href="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.css" rel="stylesheet" />
  </head>
  <body>
    <div id="mocha"></div>
    <div id="messages"></div>
    <div id="fixtures"></div>
    <script src="https://cdn.rawgit.com/jquery/jquery/2.1.4/dist/jquery.min.js"></script>
    <script src="https://cdn.rawgit.com/Automattic/expect.js/0.3.1/index.js"></script>
    <script src="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.3.0/chai.js"></script>
    <script src="lead-helper.js"></script>
    <script>mocha.setup('bdd')</script>
    <script src="test/test.lead-helper.js"></script>
    <script>
      mocha.checkLeaks();
      mocha.globals(['jQuery']);
      mocha.run();
    </script>
  </body>
  </html>

2 个答案:

答案 0 :(得分:2)

您的代码似乎是在交叉使用。你加载柴:

 <script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.3.0/chai.js"></script>

这是一个功能齐全的断言库,但您使用require("assert"),这似乎是尝试将Node assert库加载到您的浏览器中。可能有一种方法可以通过使用Browserify来加载它,但我不知道为什么你这样做,因为你已经加载了Chai,并且没有迹象表明你的其余代码需要Browserify 。

我只是删除了require来电,而是:

var assert = chai.assert;

答案 1 :(得分:1)

这是因为默认情况下浏览器环境中没有require()方法,因此您必须在脚本修改中进行一些更改。你可以采取一些方法:

  • 使用其他方法加载脚本,例如使用帮助 <script>标记。
  • 使用CommonJS实施,例如BrowserifyComponent
  • 使用像RequireJs这样的AMD实现。