Javascript 因果报应由于“原因”而未运行单元测试;“没有捕获的浏览器”;消息
我试图设置Karma来运行使用Jasmine的AngularJS单元测试,但我无法运行测试。我肯定我忽略了一些简单的事情。我在安装了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 这导
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 clinpm 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