在Jasminetesting中将调用redirect到console.log()以标准输出

我通过jasmine-maven-plugin使用Jasmine,我想在Maven构build输出中看到console.log()消息。 有没有办法做到这一点?

如果console.log()不能被redirect,还有没有其他方法可以从我的testing中logging下来,以便它们显示在Maven构build输出中?

我正以无头的方式在Jenkins上运行这些testing,并希望能够从testing中获得一些debugging输出。

尝试

console.info('foo') 

从testingjavascripts。

您可以使用:

 jasmine.log("I've got a big log."); 

注意:请参阅下面的道格拉斯·斯皮尔韦尔的评论。

如果你正在运行一个节点env。 你可以使用

process.stdout.write(“这将被发送到控制台”);

我通过guardphantom js使用jasmine 2 ,并发现testing中的标准console.log消息输出到茉莉花规格亚军的控制台就好了。

我也发现,我正在testing的JavaScript代码元素中的console.log消息会写出到stdout而不是testing本身内的console.log消息。

我认为这是不可能的

我不得不在spec加载器中覆盖console.log实现。 即(使用jQuery)

 var console = { panel: $('body').append('<div>').css({position:'fixed', top:0, right:0,background:'transparent'}), log: function(m){ this.panel.prepend('<div>'+m+'</div>'); } }; console.log('message 1'); console.log('message 2'); 

在这里你有一个function的例子

用grunt / karma / jasmine(karma-jasmine 0.2.2)跑进同样的问题 –

为了配合Dave Sag说的话,我发现我所testing的代码中的所有console.log消息都运行正常,但是我的describe() {}it() {}都没有logging任何东西。

确实发现可以从beforeEach() {}块login。 至less它对我有效:

 beforeEach(function() { this.model = new blahModel(); console.log('this.model = ', this.model); }); 

请注意,这只能在浏览器控制台中login,并且由于某种原因不会login命令行。 当testing代码块的console.log语句在命令行中login时,会有些奇怪。 我也发现这里似乎是一个更好的一致性日志logging方法。

更新:我实际上看到日志工作的块,以及我相信我有其他错误,阻止了这一点。

如果你对terminal窗口中的任何输出感到绝望,所以你可以在testing完成并且浏览器closures之后再查看数据, console.error()似乎是个窍门。