【问题标题】:Test nodejs server code without running server在不运行服务器的情况下测试 nodejs 服务器代码
【发布时间】:2017-05-04 14:39:02
【问题描述】:

nodejs 测试新手。

我有一个 nodejs 服务器,它运行一些复杂的服务器端逻辑,我正在考虑为该代码构建一个单元测试运行程序。我确实想要运行服务器并测试发送它的请求,因为这不会公开我想在服务器端测试的所有模块和功能。那将更像是集成测试。我只是想导入那些写成AMD模块的服务器端文件,并在单元测试中一一调用它们的功能。

最好的方法是什么?

【问题讨论】:

    标签: node.js unit-testing


    【解决方案1】:

    您首先需要在当前项目中安装一个单元测试和断言框架。然后你还需要添加requirejs (r.js)。

    我们目前使用mochajs 进行单元测试,should 作为断言库。两者都对测试 Node.js 有很好的采用和功能支持。

    npm install mochajs shouldjs requirejs --save-dev
    

    这会将三个包添加到您的本地 node_modules 中,并将它们保存在您的 package.json 的 devDependencies 中。

    继续在你的项目中设置一个单元测试目录并创建一个新的测试文件,[your_module_name]_test.js:

    const should = require('should'),
          foo = require('foo');
    
    describe('foo', () => {
      it('returns the letter a', () => {
        foo().should.eql('a');
      });
    });
    

    在测试文件中,您需要要求被测模块,然后像往常一样进行单元测试。

    然后您可以通过 r.js 运行测试

    ./node_modules/requirejs/bin/r.js [your_test_dir]/[your_module_name]_test.js
    

    您也可以全局安装 mochajs,然后简单地运行 mocha 命令,而不是使用本地 node_modules 中的 bin。

    祝你好运,希望这会有所帮助。

    【讨论】:

    • 感谢您的详细回答。我实际上也在使用 mochajs,但是我在尝试在测试脚本或节点 repl 中要求 AMD 模块时遇到问题。 require('path/to/amd/module') 在节点中是否适合您?
    • 目前没有使用任何 AMD 风格的模块,你有没有看过可能通过 r.js 运行它? github.com/requirejs/r.js
    • 这就是我要找的,谢谢!如果您编辑答案以添加此位,我会接受它,因为它是原始问题的一部分。 :)
    猜你喜欢
    • 1970-01-01
    • 2016-04-12
    • 2019-03-17
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多