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
报告者?
答案 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);
})