我通过jasmine-maven-plugin使用Jasmine,我想在Maven构建输出中看到console.log()消息。有没有办法实现这个目标?
如果无法重定向console.log(),是否还有其他方法可以从我的测试中进行记录,以便它们显示在Maven构建输出上?
我正在以无头的方式在Jenkins上运行这些测试,并希望能够从测试中获得一些调试输出。
答案 0 :(得分:53)
尝试
console.info('foo')
来自测试javascripts。
答案 1 :(得分:37)
您可以使用:
jasmine.log("I've got a big log.");
注意:请参阅下面的douglas-treadwell's评论。
这是指Jasmine 1.x.使用Jasmine 2.0,只需直接使用console.log。
答案 2 :(得分:11)
如果您在节点环境中运行。你可以用
process.stdout.write("这将发送到控制台");
答案 3 :(得分:3)
我认为不可能。
我不得不在规范加载器中覆盖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');
here你有一个功能性的例子
答案 4 :(得分:3)
我通过jasmine 2
和guard
使用phantom js
并且发现测试中的标准console.log
消息输出到jasmine spec runner的控制台就好了。
我还发现,我正在测试的javascript代码元素中的console.log
条消息会在测试中自行写入stdout
但不会发送console.log
条消息。
答案 5 :(得分:3)
如果您在终端窗口中急需任何输出,以便在测试完成且浏览器关闭后可以查看数据,console.error()
似乎可以解决问题。
答案 6 :(得分:2)
使用grunt / karma / jasmine(karma-jasmine 0.2.2)进入相同的问题 -
为了配合Dave Sag说的话,我发现我正在测试的代码中的所有console.log
消息都运行正常,但我的describe() {}
和it() {}
没有任何消息阻止记录任何事情
我 发现您可以从beforeEach() {}
块进行登录。至少它对我有用:
beforeEach(function() {
this.model = new blahModel();
console.log('this.model = ', this.model);
});
请注意,只会在浏览器控制台中登录,并且由于某种原因不会登录命令行。什么时候有点奇怪 的console.log 来自测试代码块的语句在命令行中登录。我还发现了一种更好的方法来进行一致的记录here。
更新:我实际上看到日志工作也阻塞它,我相信我还有其他错误阻止了这一点。
答案 7 :(得分:1)
1)转到项目目录,其中有pom.xml。在cmd中运行以下命令。 mvn茉莉花:bdd
2)您将获得localhost URL:localhost:8234(仅作为示例)。
3)在浏览器中运行此URL。现在,您所有的测试用例都将执行。
4)执行此页面的检查元素。在浏览器控制台中,您将能够看到所有console.log()或console.error()跟踪。