由于“没有捕获的浏览器”消息,Karma没有运行单元测试

时间:2014-02-02 17:22:31

标签: javascript node.js angularjs karma-runner

我正在尝试使用Jasmine设置Karma来运行AngularJS单元测试,但我无法让测试运行。我确定我忽视了一些简单的事情。我在安装了Node.js并通过npm安装了karma的Windows 7计算机上运行此功能。

我的目录结构如下所示:

  
      
  • js / app / - 包含控制器,app等
  •   
  • js / config / - 包含karma.conf.js
  •   
  • js / lib / - 包含angular
  •   
  • 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

12 个答案:

答案 0 :(得分:9)

我在不同的设置(Linux,QUnit,Firefox)中遇到了同样的问题。在我杀死所有业力流程并做了一个新的karma start后,问题就消失了。

答案 1 :(得分:8)

我有face palm momentkarma start需要与karma.conf.js文件在同一目录中运行。

答案 2 :(得分:7)

此错误可能意味着浏览器无法找到服务器。检查您是否可以通过它提到的URL访问服务器。它可能是配置错误的端口号,甚至(就像我的情况一样),localhost配置错误。我想可能是服务器没有运行,或者是其他十几个问题。

检查您是否可以手动访问服务器。如果你不能,那就解决这个问题。

答案 3 :(得分:1)

当我的代码中出现无限循环时,这发生在我身上。注释掉(在jasmine中使用xdescribe)我写的最新代码再次运行测试。

答案 4 :(得分:1)

我遇到了同样的问题,没有代码更改,只是重新运行一个月前运行的测试。

当我从webstorm跑出来时,似乎需要很长时间来捕获浏览器,所以我想知道它是否超时。

所以我尝试将浏览器设置为Chrome(我也使用phantomjs)并等待。然后重置回ChromePhantomJS,现在没问题。

答案 5 :(得分:1)

我遇到了同样的问题并尝试了很多我发现的建议解决方案,但最终为我解决的是删除node_modules文件夹并通过npm install获取所有新内容。

同样的问题:Karma - Chrome failed 2 times (cannot start). Giving up

答案 6 :(得分:1)

在我的情况下,环境变量CHROME_BIN设置为错误的路径。固定值(可能在/etc/environment中定义)或使用unset CHROME_BIN暂时取消设置环境变量。

要查找问题的原因,在Karma的配置文件中设置日志级别以进行调试很有帮助:

logLevel: config.LOG_DEBUG,

答案 7 :(得分:0)

我遇到了同样的问题,我做了所有来自这里的人都没有任何结果。在我的情况下,我没有做init:

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的位置。

在我修复了widows控制台中出现的问题之后的两种情况中:

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

答案 8 :(得分:0)

安装karma-cli npm install -g karma-cli为我解决了这个问题。 希望这会有所帮助。

答案 9 :(得分:0)

我遇到了同样的问题,并通过杀死任务管理器中的所有Chrome实例来解决了这个问题。似乎正在运行“ n”个测试跑步者。当您在不停止服务器的情况下关闭业力测试运行程序时,该实例仍处于活动状态。

因此,按“ alt + ctrl + Delete”,终止所有chrome会话/实例,然后重新启动Karma。

有效!

答案 10 :(得分:0)

我遇到了同样的问题,这是测试中的错误。删除该代码可修复错误。

答案 11 :(得分:0)

我有相同的消息,因为我的PC上没有安装Chrome。只是铬。好吧,事实证明那是不一样的。现在,安装Chrome后,“ Chrome”和“ ChromeHeadless”浏览器都可以启动。

否则,您可以在配置中指定“ Chromium”或“ ChromiumHeadless”,并对此满意。

TLDR:确保已实际安装要测试的浏览器。