Javascript 因果报应由于“原因”而未运行单元测试;“没有捕获的浏览器”;消息

Javascript 因果报应由于“原因”而未运行单元测试;“没有捕获的浏览器”;消息,javascript,node.js,angularjs,karma-runner,Javascript,Node.js,Angularjs,Karma Runner,我试图设置Karma来运行使用Jasmine的AngularJS单元测试,但我无法运行测试。我肯定我忽略了一些简单的事情。我在安装了Node.js,并通过npm安装了karma的Windows7机器上运行此程序 我的目录结构如下所示: js/app/-包含控制器、应用程序等 js/config/-包含karma.conf.js js/lib/-包含角度 js/test/-包含茉莉花规格 我正在js目录中启动一个命令提示符,并运行以下命令: karma启动配置/karma.conf.js 这导

我试图设置Karma来运行使用Jasmine的AngularJS单元测试,但我无法运行测试。我肯定我忽略了一些简单的事情。我在安装了
Node.js,并通过
npm
安装了karma的Windows7机器上运行此程序

我的目录结构如下所示:

  • js/app/-包含控制器、应用程序等
  • js/config/-包含karma.conf.js
  • js/lib/-包含角度
  • js/test/-包含茉莉花规格
我正在
js
目录中启动一个命令提示符,并运行以下命令:

karma启动配置/karma.conf.js

这导致Chrome在端口9876上运行,但每当我更改任何监视的文件并检查Karma输出时,我都会看到以下信息消息:

没有捕获的浏览器,打开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
  });
};
logLevel: config.LOG_DEBUG,

我使用的是Angular 1.2.10和Karma 0.10.9,但我在不同的设置(Linux、QUnit、Firefox)中遇到了相同的问题。在我关闭所有karma进程并重新启动karma后,问题消失了。这个错误可能意味着浏览器找不到服务器。检查您是否可以通过它提到的URL访问服务器。它可能是配置错误的端口号,甚至(在我的例子中),
localhost
配置错误。我想可能是服务器没有运行,或者是其他十几个问题中的任何一个


检查是否可以手动访问服务器。如果不能,请修复它。

这发生在我身上,当时我的代码中有一个无休止的循环。注释掉(在jasmine中使用
xdescripe
)我最近编写的代码使测试再次运行。

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

当我从
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
的位置

在这两种情况下,在修复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

我吃了一顿饭
karma start
需要在与
karma.conf.js
文件相同的目录下运行。

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

我也遇到了同样的问题,并尝试了许多我找到的建议解决方案,但最终为我解决的是删除node_modules文件夹,并通过npm安装获得所有新内容


同样的问题:

我也面临同样的问题,我通过从Task Manager中删除所有chrome实例来解决它。似乎有“n”个测试跑步者在跑步。当您在不停止服务器的情况下关闭karma test runner时,它的实例仍处于活动状态

所以按下“alt+ctrl+delete”,杀死所有chrome会话/实例并重新启动Karma


它起作用了

最近出现了相同的错误:

  • 使用
    angular cli的项目
  • 在无头环境中在Jenkins上运行的测试
事实证明,我之前在测试运行的步骤中取消了Jenkins作业,因此
ng test
没有退出(有一些正在运行的
ng
进程,与
[node]
进程配对,阻止了进一步的测试执行)。解决方案是找到并杀死所有挂起的
ng
进程:

$ sudo -su jenkins
# ps aux | grep "ng$" | awk '{print $2}' | xargs kill -9

我也有同样的问题,这是测试中的一个错误。删除该代码修复了错误。

我收到了相同的消息,因为我的电脑上没有安装Chrome。只有Chrome。事实证明,这是不一样的。现在在安装了Chrome之后,“Chrome”和“ChromeHeadless”浏览器都可以启动了

否则,您可能会在配置中指定“Chromium”或“ChromiumHeadless”,并且可以使用它


TLDR:确保您实际安装了正在测试的浏览器。

在我的例子中,环境变量
CHROME\u-BIN
被设置为错误路径。修复该值(可能在
/etc/environment
中定义)或使用
unset CHROME\u BIN
临时取消设置环境变量

要找到问题的原因,在Karma的配置文件中将日志级别设置为debug很有帮助:

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
  });
};
logLevel: config.LOG_DEBUG,

Windows上的业力似乎存在一些问题:您是否尝试过此处建议的解决方案:?它可能与chrome二进制文件的路径有关(Karma只知道默认路径),也可能是你的防火墙(尝试禁用一段时间),你还应该查看你的主机文件。谢谢@Glepter,但不幸的是,这些建议都没有奏效。我的主机文件是干净的(新安装的Windows),关闭防火墙没有帮助。我可以让浏览器加载(试过Firefox、Chrome和IE),但它只是说
Karma-starting
,然后没有在浏览器中显示任何进一步的输出。我可以确认同样的问题也发生在Mac上。我不明白为什么需要为单元测试打开浏览器,而单元测试不一定要链接到ui。我认为之所以打开浏览器,是因为测试框架直接使用浏览器中的javascript运行时引擎。令人沮丧的是,它似乎不起作用,没有人有一个答案,但这也为我解决了它。老实说,我不认为那是你的掌心时刻。这是来自Karma的一条误导性错误消息。如果Karma不是从与配置文件相同的文件夹运行的,则可以将路径传递到配置文件f