[英]Karma not running unit tests due to “No captured browser” message
我正在嘗試設置 Karma 以使用 Jasmine 運行 AngularJS 單元測試,但我無法運行測試。 我確定我忽略了一些簡單的事情。 我在安裝了Node.js
並通過npm
安裝了 karma 的 Windows 7 機器上npm
。
我的目錄結構如下所示:
- js/app/ - 包含控制器、應用程序等
- js/config/ - 包含 karma.conf.js
- js/lib/ - 包含角度
- js/test/ - 包含茉莉花規格
我在js
目錄中啟動命令提示符並運行以下命令:
karma start config/karma.conf.js
這會導致 Chrome 在端口 9876 上運行,但是每當我更改任何監視的文件並檢查 Karma 輸出時,我都會看到以下信息消息:
No captured browser, open http://localhost:9876/
這是我的配置文件:
module.exports = function(config) {
config.set({
basePath: '../',
frameworks: ['jasmine'],
files: [
'lib/angular.js',
'app/**/*.js',
'test/**/*.js'
],
exclude: [
],
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
captureTimeout: 60000,
singleRun: false
});
};
我正在使用 Angular 1.2.10 和 Karma 0.10.9
不過,我只是在不同的設置(Linux、QUnit、Firefox)中遇到了同樣的問題。 在我殺死所有 karma 進程並重新karma start
karma 后,問題就消失了。
我有一臉掌心的時刻。 karma start
需要在與karma.conf.js
文件相同的目錄中運行。
此錯誤可能意味着瀏覽器找不到服務器。 檢查您是否可以通過它提到的 URL 訪問服務器。 它可能是錯誤配置的端口號,甚至(就像我的情況一樣) localhost
配置錯誤。 我想這可能是服務器沒有運行,或者其他十幾個問題中的任何一個。
檢查您是否可以手動訪問服務器。 如果你不能,修復它。
當我的代碼中有無限循環時,這發生在我身上。 注釋掉(在 jasmine 中使用xdescribe
)我最近編寫的代碼使測試再次運行。
我遇到了同樣的問題,這是測試中的錯誤。 刪除該代碼修復了錯誤。
在我的情況下,環境變量CHROME_BIN
設置為錯誤的路徑。 修復該值(可能在/etc/environment
定義)或使用unset CHROME_BIN
臨時unset CHROME_BIN
環境變量。
要找到問題的原因,在 Karma 的配置文件中設置日志級別以進行調試很有幫助:
logLevel: config.LOG_DEBUG,
我遇到了同樣的問題並嘗試了很多我找到的建議解決方案,但最終為我解決的是刪除 node_modules 文件夾並通過 npm install 獲取所有新內容。
我遇到了同樣的問題,沒有更改代碼,只是重新運行一個月前有效的測試。
當我從webstorm
運行時,似乎需要很長時間才能捕獲瀏覽器,所以我想知道它是否超時。
所以我嘗試將瀏覽器設置為Chrome
(我也在使用phantomjs
),然后等待。 然后重置回Chrome
和PhantomJS
,現在很好。
我遇到了同樣的問題,我做了這里每個人所說的所有事情,但沒有任何結果。 就我而言,我沒有執行初始化:
C:\Users>cd c:\xampp\htdocs\angularjs-pro\ch07
c:\xampp\htdocs\angularjs-pro\ch07>karma init
Which testing framework do you want to use ?
Press tab to list possible options. Enter to move to the next question.
> jasmine
Do you want to use Require.js ?
This will add Require.js plugin.
Press tab to list possible options. Enter to move to the next question.
> no
Do you want to capture any browsers automatically ?
Press tab to list possible options. Enter empty string to move to the next question.
> Chrome
第二次遇到同樣的情況是當我試圖在錯誤的文件夾中執行karma start
時,而不是我放置karma init
。
在我解決了在寡婦控制台中遇到的問題后,在這兩種情況下:
22 11 2016 14:06:51.697:INFO [karma]: Karma v1.3.0 server started at http://localhost:9876/
22 11 2016 14:06:51.698:INFO [launcher]: Launching browser Chrome with unlimited concurrency
22 11 2016 14:06:51.711:INFO [launcher]: Starting browser Chrome
22 11 2016 14:06:53.936:INFO [Chrome 54.0.2840 (Windows 10 0.0.0)]: Connected on socket /#HnJUQrkRPqtGFa5ZAAAA with id 16058274
安裝 karma-cli npm install -g karma-cli
為我解決了這個問題。 希望這可以幫助。
我遇到了同樣的問題,我通過從任務管理器中殺死所有 chrome 實例來解決它。 似乎有“n”個測試運行器在運行。 當您在不停止服務器的情況下關閉 karma 測試運行程序時,它的實例仍然存在。
所以按'alt + ctrl + delete',殺死chrome的所有會話/實例並重新啟動Karma。
有用!
最近有同樣的錯誤:
angular-cli
的項目, 結果我之前在測試運行的步驟中取消了 Jenkins 作業,所以ng test
沒有退出(有一些正在運行的ng
進程,與[node] <defunct>
配對,阻止了進一步的測試執行)。 解決方案是找到並殺死所有掛起的ng
進程:
$ sudo -su jenkins
# ps aux | grep "ng$" | awk '{print $2}' | xargs kill -9
我收到了同樣的消息,因為我的 PC 上沒有安裝 Chrome。 只是鉻。 好吧,事實證明這是不一樣的。 現在安裝 Chrome 后,“Chrome”和“ChromeHeadless”瀏覽器都可以啟動。
否則,您可能會在配置中指定“Chromium”或“ChromiumHeadless”,然后就可以了。
TLDR:確保您實際安裝了正在測試的瀏覽器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.