簡體   English   中英

在 Jasmine 測試中將對 console.log() 的調用重定向到標准輸出

[英]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。

茉莉花 1.x

您可以使用:

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

茉莉花 2+

直接使用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()似乎可以解決問題。

我正在通過guardphantom 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM