【问题标题】:Testing a node command line app with jasmine-node使用 jasmine-node 测试节点命令行应用程序
【发布时间】:2019-07-05 05:22:56
【问题描述】:

我将如何使用Jasmine/jasmine-node 测试基于节点的 CLI?我过去曾使用Jasmine 测试过节点模块,这很简单,因为我只需要在规范文件中的模块中对其进行初始化和测试,但显然这与 CLI 不同。显然,一种方法是将其转换为一个类并自行测试,然后将其转换为 CLI,但这不是真正的交易。有人用 Jasmine 成功测试过节点 CLI 吗?

【问题讨论】:

    标签: javascript tdd jasmine bdd


    【解决方案1】:

    像任何优秀的 unix 公民一样,节点 CLI 应用程序应该支持标准输出重定向。如果它这样做了,那么通过存储缓冲区并在结束时在其上运行断言来测试它就变得非常简单。此测试策略使用tape,但生成进程和在其标准输出上运行断言的一般概念应该可以转移到另一个测试框架。

    var test = require('tape');
    var spawn = require('child_process').spawn;
    var path = require('path');
    var read = require('fs').readFileSync;
    
    test('binary', function (t) {
        t.plan(3);
    
        process.chdir(__dirname);
    
        var ps = spawn(process.execPath, [
            path.resolve(__dirname, '../bin/cmd.js'),
            'fixture.txt'
        ]);
    
        var out = '';
        var err = '';
        ps.stdout.on('data', function (buffer) { out += buffer; });
        ps.stderr.on('data', function (buffer) { err += buffer; });
    
        ps.on('exit', function (code) {
            var expected = read('expected.txt', 'utf-8');
            t.notOk(err, 'should not error');
            t.equal(code, 0, 'should exit with code 0');
            t.equal(out, expected, 'should perform the transform');
        });
    });
    

    此 CLI 应用程序将文本文件作为其第一个参数并通过转换运行它。您所要做的就是提供一个夹具和预期的结果,然后运行测试。

    【讨论】:

    • 您最好提供代码来测试实际的 CLI,而不是对 nodejs 代码进行通常的“后门”测试。但不幸的是,该代码不适用于 jasmine。
    【解决方案2】:

    从 CLI 运行特定文件夹中的所有测试

    在 Windows 上,从命令提示符:

    "<PATH TO NODE IF NOT IN ENV>\node.exe" "<PATH TO JASMINE-NODE MODULE>\jasmine-node\lib\jasmine-node\cli.js --verbose --test-dir <PATH TO SPECS>
    

    例子:

    "C:\Program Files (x86)\nodejs\node.exe" "c:\MyProject\node_modules\jasmine-node\lib\jasmine-node\cli.js" --verbose --test-dir c:\MyProject\Specs
    

    在 git 上查看文档:

    https://github.com/mhevery/jasmine-node

    https://github.com/mhevery/jasmine-node/wiki/Command-Line-Usage

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 2011-09-04
      • 1970-01-01
      • 2018-01-24
      • 2021-12-23
      • 1970-01-01
      • 2012-11-16
      • 2015-08-08
      相关资源
      最近更新 更多