[英]Redirect calls to console.log() to standard output in Jasmine tests
我正在通過 jasmine-maven-plugin 使用 Jasmine,我希望在 Maven 構建輸出中看到 console.log() 消息。 有沒有辦法實現這一目標?
如果 console.log() 無法重定向,是否還有其他方法可以從我的測試中記錄日志,以便它們顯示在 Maven 構建輸出中?
我正在以無頭方式在 Jenkins 上運行這些測試,並且想要一種從測試中獲取一些調試輸出的方法。
嘗試
console.info('foo')
來自測試javascripts。
您可以使用:
jasmine.log("I've got a big log.");
直接使用console.log
,根據下面的douglas-treadwell 的評論。
如果您在節點環境中運行。 你可以用
process.stdout.write("this will be send to the console");
我認為這是不可能的。
我不得不覆蓋規范加載器中的 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');
在這里你有一個功能實例
如果您迫切需要終端窗口中的任何輸出,以便您可以在測試完成且瀏覽器關閉后查看數據, console.error()
似乎可以解決問題。
我正在通過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
消息都運行良好,但是我的describe() {}
和it() {}
任何內容都沒有阻止記錄任何內容。
我確實發現您可以從beforeEach() {}
塊中登錄。 至少它對我有用:
beforeEach(function() {
this.model = new blahModel();
console.log('this.model = ', this.model);
});
請注意,這只會登錄瀏覽器控制台,出於某種原因不會登錄命令行。 當來自測試代碼塊的 console.log 語句確實記錄在命令行中時,有些奇怪。 我還發現了什么,似乎是一致的記錄一個更好的方法在這里。
更新:我實際上也看到了為它工作的日志記錄塊,我相信我還有其他錯誤阻止了這一點。
1) 轉到您擁有 pom.xml 的項目目錄。 在 cmd 中運行以下命令。 mvn茉莉花:bdd
2) 您將獲得 localhost URL:localhost:8234(只是一個示例)。
3) 在瀏覽器中運行這個 URL。 現在你所有的測試用例都被執行了。
4) 執行此頁面的 Inspect 元素。 在瀏覽器控制台中,您將能夠看到所有 console.log() 或 console.error() 跟蹤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.