Javascript 将对console.log()的调用重定向到Jasmine测试中的标准输出

Javascript 将对console.log()的调用重定向到Jasmine测试中的标准输出,javascript,jasmine,jasmine-maven-plugin,Javascript,Jasmine,Jasmine Maven Plugin,我通过Jasmine maven插件使用Jasmine,我希望在maven构建输出中看到console.log()消息。有没有办法做到这一点 如果无法重定向console.log(),是否有其他方法从我的测试记录日志,以便它们显示在Maven构建输出中 我正在以无头方式在Jenkins上运行这些测试,希望能够从测试中获得一些调试输出。我认为这是不可能的 我必须覆盖规范加载器中的console.log实现。i、 e(使用jQuery): var控制台={ 面板:$('body').append('

我通过Jasmine maven插件使用Jasmine,我希望在maven构建输出中看到console.log()消息。有没有办法做到这一点

如果无法重定向console.log(),是否有其他方法从我的测试记录日志,以便它们显示在Maven构建输出中


我正在以无头方式在Jenkins上运行这些测试,希望能够从测试中获得一些调试输出。

我认为这是不可能的

我必须覆盖规范加载器中的console.log实现。i、 e(使用jQuery):

var控制台={
面板:$('body').append('').css({位置:'fixed',顶部:0,右侧:0,背景:'transparent'}),
日志:函数(m){
本面板前置(“”+m+“”);
}       
};
console.log(“消息1”);
console.log('message2');
​ 您有一个功能示例

Jasmine 1.x 您可以使用:

jasmine.log("I've got a big log.");
茉莉花2+
根据下面的评论,直接使用
console.log

我通过
guard
phantom js
使用
jasmine 2
,发现测试中的标准
console.log
消息可以输出到jasmine spec runner的控制台


我还发现,我正在测试的javascript代码元素中的
console.log
消息确实会写入
stdout
,但不会写入测试本身中的
console.log
消息。

使用grunt/karma/jasmine遇到同样的问题(karma-jasmine 0.2.2)-

按照Dave Sag所说的,我发现我正在测试的代码中的所有
console.log
消息都运行良好,但是
descripe(){}
it(){}
中的任何消息都不会阻止任何日志记录

我确实发现您可以从beforeach(){}块中登录。至少它对我有用:

beforeEach(function() {
  this.model = new blahModel();
  console.log('this.model = ', this.model);
});
请注意,这只会登录到浏览器控制台,由于某些原因,不会登录到命令行。有点奇怪当 console.log 测试代码块中的语句不会记录在命令行中。我还发现了一种更好的一致性日志记录方法

更新:事实上,我看到日志也在为it块工作,我相信我还有其他错误阻止了这一点。

试试看

console.info('foo')

如果您正在节点环境中运行,请从测试Java脚本中选择。你可以用

process.stdout.write("this will be send to the console");

如果您迫切需要终端窗口中的任何输出,以便在测试完成且浏览器关闭后可以查看数据,
console.error()
似乎可以做到这一点。

1)转到您的项目目录,在那里有pom.xml。在cmd中运行以下命令。 mvn茉莉花:bdd

2) 您将获得localhost URL:localhost:8234(只是一个示例)

3) 在浏览器中运行此URL。现在所有的测试用例都被执行了


4) 执行此页面的Inspect元素。在浏览器控制台中,您将能够看到所有console.log()或console.error()跟踪。

IIUC,这会将console.log()消息打印到一个浏览器。我想要的是将它放在Maven构建的标准输出上。我遗漏了什么吗?这是可能的。直接使用console.log即可。这并没有回答原来的问题。请注意,默认情况下,
div
具有透明背景。另请参见:这对我不适用;当运行
mvn jasmine:test
(使用插件版本1.3.1.3,htmlunit 2.13)时,我在终端的任何地方都看不到
jasmine.log的输出@Pavelishin,它不会打印到控制台窗口,但会打印到web runner。这是指jasmine 1.x。对于Jasmine 2.0,只需直接使用console.log。为什么是.info而不是.log?奇怪的是,对于Jasmine 2.5,我不得不这样做而不是console.log。我有详细说明,但console.log没有显示(它显示的是日志行+空字符串),而console.info实际上显示的是日志行+我正在记录的内容。@user1338062-因此,来自否决票的反馈是,您应该包括ezekial victor提供的信息,如果有,您可能还没有得到downvotes.console.log应该可以工作。如果在输出中看不到console.logs,请尝试在调用堆栈的早期位置添加更多。很可能您之前遇到了一个错误,该错误阻止执行到达您的console.log。
console.error()
似乎按照我的回答起作用。
process.stdout.write("this will be send to the console");