如何使用Vows的run()方法使用不同的记者?

时间:2011-08-31 20:12:40

标签: node.js vows

Vows有一个run()方法,它在节点下运行测试,而不使用vows命令。

https://github.com/cloudhead/vows/blob/master/lib/vows/suite.js,我们可以看到此方法采用了一个选项参数,该参数允许指定默认值以外的报告者:

this.run = function (options, callback) {
    var that = this, start;

    options = options || {};

    for (var k in options) { this.options[k] = options[k] }

    this.matcher  = this.options.matcher  || this.matcher;
    this.reporter = this.options.reporter || this.reporter;

应该在options对象中传递什么值来选择不同的报告者,例如spec报告者?

3 个答案:

答案 0 :(得分:6)

尝试:

var spec = require("vows/lib/vows/reporters/spec");
// ...
vows.describe("My Tests").addBatch({ /* some batch */ }).run({reporter:spec});

这是对我有用的最简单方法。

答案 1 :(得分:2)

您需要一名记者的实例。其中只有一个是公开的(点记者)vows.options.reporter

除此之外,您可以剔除vows reporter folder中的任何记者。并手动包含它。

替代方案是导出誓言套件(.export(module))并致电$ vows --spec$ vows --json

vows-is还提供了与“规范”记者类似的reporter

我想你可以在誓言上公布一个让记者公开的问题。

答案 2 :(得分:2)

实际上,记者的要求已经在vows / lib / vows / suite.js上做了

    if (options.reporter) {
      try {
        this.reporter = typeof options.reporter === 'string'
            ? require('./reporters/' + options.reporter)
            : options.reporter;
      } catch (e) {
        console.log('Reporter was not found, defaulting to dot-matrix.');
      }
    }

然后,要使用它,你应该只是:

vows.describe('Your suite').addBatch({
    // your batch in here
    }).run({reporter:'spec'}, function(testResults){
        log(testResults);
})