2014-09-05 76 views
5

我在PhantomJS上使用Karma運行我的測試,並且面臨異步運行循環問題。我想知道在測試運行時是否有交互式調試代碼(逐步執行)。在使用Karma運行測試時使用PhantomJS代碼使用代碼

任何幫助,非常感謝。

+0

可能有更好的方法,但我只是用瀏覽器的開發工具。在chrome中設置一個斷點,或使用'debugger;'語句。 – 2014-09-05 22:03:02

+0

我會這樣做,但問題是我在PhantomJS上專門面對一個問題。這些測試在Chrome和Firefox上運行得很好。 – 2014-09-05 22:25:40

+0

Nick的意思是說,在普通的phantomjs中有一個遠程調試器,你可以用'debugger;'設置斷點。 – 2014-09-05 22:30:23

回答

1

您可以在一個測試塊中設置debugger語句。然後將你的瀏覽器指向你正在運行業力的任何URL並打開你的開發工具。調試器應該在它到達你的測試塊時觸發。與

假設茉莉/摩卡期待:

it('fires a debugger', function() { 
    var bool = true || false; 
    debugger; 

    while(bool) { 
    // uh oh... 
    } 
}); 

以我的經驗,調試器會火上都http://localhost:<your-karma-port>http://localhost:<your-karma-port>/debug.html,但你可以使用調試URL有更多的運氣。

如果您無法看到您的調試器語句,那麼您的測試設置可能存在更大的問題。

2

如果你在你的業力測試使用karma-phantomjs-launcher NPM包,你可以在karma.conf.js文件運行調試器模式PhantomJS添加以下代碼片段:

browsers: ['PhantomJS_custom'], 

// you can define custom flags 
customLaunchers: { 
    'PhantomJS_custom': { 
    base: 'PhantomJS', 
    debug: true 
    } 
} 

在此之後,寫下你想要一個debugger;聲明將斷點放入代碼中。

現在,當您啓動karma測試運行器時,您會看到PhantomJS正在等待您的瀏覽器連接到調試器端口以開始執行測試。

29 12 2016 13:14:25.269:INFO [launcher]: Starting browser PhantomJS 
29 12 2016 13:14:25.325:INFO [phantomjs.launcher]: ACTION REQUIRED: 
29 12 2016 13:14:25.325:INFO [phantomjs.launcher]: 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: Launch browser at 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: http://localhost:9000/webkit/inspector/inspector.html?page=2 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: Waiting 15 seconds ... 

點你的Chrome瀏覽器在日誌中指定的地址。現在,您將看到Phantomjs提供的調試器界面。代碼在PhantomJS引擎中執行,但您可以觀察斷點,評估表達式並從任何基於Webkit的瀏覽器執行許多調試操作。

相關問題