我们需要将Karma测试运行器集成到TeamCity中,为此我想给sys-engineer小脚本(powershell或其他):
从一些配置文件中获取所需的版本号(我想我可以把它作为注释karma.conf.js)
检查是否在npm的全局仓库中安装了定义版本的karma runner
如果不是,或者安装的版本比预期版本旧:选择并安装正确的版本
运行: karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
所以我真正的问题是:"如果安装了所需的软件包版本,如何检查脚本?".你应该做检查,还是npm -g install每次都可以安全地打电话?
我不想总是检查并安装最新的可用版本,因为其他配置值可能会变得不兼容
我一直在尝试在我的package.json文件上运行npm install,但是我遇到了很多麻烦.它一直说"错误:尝试解锁XXX,我没有锁定"我的所有依赖.这是其中之一:
Error: Attempt to unlock tbd@~0.6.4, which hasn't been locked
at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1304:11)
at cb (/usr/local/lib/node_modules/npm/lib/cache.js:646:5)
at /usr/local/lib/node_modules/npm/lib/cache.js:655:20
at /usr/local/lib/node_modules/npm/lib/cache.js:1290:7
at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
at Object.oncomplete (fs.js:107:15)
Run Code Online (Sandbox Code Playgroud)
如果我尝试将其作为sudo运行,它似乎进一步开始安装一些软件包,但是一些新的错误弹出:
> chokidar@0.8.1 postinstall /Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/chokidar
> node setup-deps.js
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
node.js:811
var cwd = process.cwd();
^
Error: EACCES, permission denied
at Function.startup.resolveArgv0 (node.js:811:23)
at startup (node.js:58:13)
at node.js:902:3
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q'
npm …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的项目中运行默认服务单元测试(取自GitHub上的Angular Seed项目),但我一直收到错误"模块未定义".
我已经读过它可能与引用的JavaScript文件的顺序有关,但我似乎无法让它工作,所以希望你们中的一个可能能够提供帮助.
我的测试配置如下所示:
basePath ='../';
files = [
'public/javascripts/lib/jquery-1.8.2.js',
'public/javascripts/lib/angular.js',
'public/javascripts/lib/angular- .js',
'public/app.js ',
'public/controllers / .js',
'public/directives.js',
'public/filters.js',
'public/services.js',
JASMINE,
JASMINE_ADAPTER,
'public/javascripts/lib/angular-mocks. js',
'test/unit/*.js'];autoWatch = true;
browsers = ['Chrome'];
junitReporter = {outputFile:'test_out/unit.xml',suite:'unit'};
该服务如下所示:
angular.module('myApp.services', []).
value('version', '0.1');
Run Code Online (Sandbox Code Playgroud)
测试看起来像这样:
'use strict';
describe('service', function() {
beforeEach(module('myApp.services'));
describe('version', function() {
it('should return current version', inject(function(version) {
expect(version).toEqual('0.1');
}));
});
});
Run Code Online (Sandbox Code Playgroud)
通过testacular运行测试时的错误是这样的:
ReferenceError:未定义模块
在使用安装业力之后,我正试图将业力作为角度种子项目的一部分运行
npm install -g karma
Run Code Online (Sandbox Code Playgroud)
我明白了:
'karma' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
当我试图从angular-client\scripts运行test.bat时,该文件的内容是:
设置BASE_DIR =%~dp0
业力开始"%BASE_DIR%..\config\karma.conf.js"%*
我还尝试导航到"\ AppData\Roaming \npm \node_modules\karma\bin"并看到了karma文件,当我试图运行它时我又得到了:
'karma'不被识别为内部或外部命令,可操作程序或批处理文件.
有什么建议?如果没有,请建议如何使用没有因果报应的茉莉花.
谢谢.
如果Protractor正在取代Angular Scenario Runner进行E2E测试,这是否意味着我仍然可以将它与Karma一起用作我的E2E测试框架?
有没有办法运行ng test单个文件而不是整个测试套件?理想情况下,我想在编辑文件时获得最快的反馈循环,但是karma在每次保存时执行整个套件,这在构建足够大的测试套件时有点慢.
所以,我一直在寻找这个,在这里找到"类似"的答案,但不完全是我想要的.
现在,如果我想测试与因缘一个单一的文件,我需要做的fit(),fdescribe()对有问题的文件...
但是,我真正想要的是能够使用配置文件调用karma,并将其指向特定文件,因此我根本不需要修改文件,即:
karma run --conf karma.conf.js --file /path/to/specific/test_file.js
是否有可能做到这一点?还是有帮助?(使用grunt或gulp?)
如何设置Karma来运行我的后端单元测试(用Mocha编写)?如果我将后端测试脚本添加到files = [],则说明require未定义.
我正在尝试为我的一个项目添加一些单元测试.
到目前为止,我已经安装并配置了业力,并安装了茉莉.我的文件test/夹中有一个测试文件.
karma服务器已启动,浏览器页面已准备就绪,但karma run失败如下:
$ karma run karma-conf.js
[2014-06-14 15:19:11.046] [DEBUG] config - Loading config /foo/test/karma-conf.js
Waiting for previous execution...
Chrome 35.0.1916 (Linux) ERROR
You need to include some adapter that implements __karma__.start method!
Run Code Online (Sandbox Code Playgroud)
此错误消息不适合Google.
这是显而易见的,还是我需要提供更多信息?
我有一个使用Karma + Jasmine进行测试的AngularJS应用程序.我有一个我想要测试的函数,它接受一个大型JSON对象,将其转换为应用程序其余部分更易使用的格式,并返回该转换后的对象.而已.
对于我的测试,我希望你有单独的JSON文件(*.json)只有模拟JSON内容 - 没有脚本.对于测试,我希望能够加载JSON文件并将对象泵入我正在测试的函数中.
我知道我可以在这里描述的模拟工厂中嵌入JSON:http://dailyjs.com/2013/05/16/angularjs-5/但我真的希望JSON不包含在脚本中 - 只需直接JSON文件.
我尝试了一些东西,但我在这方面相当不错.首先,我设置我的Karma以包含我的JSON文件,看看它会做什么:
files = [
...
'mock-data/**/*.json'
...
]
Run Code Online (Sandbox Code Playgroud)
这导致:
Chrome 27.0 (Mac) ERROR
Uncaught SyntaxError: Unexpected token :
at /Users/aaron/p4workspace4/depot/sitecatalyst/branches/anomaly_detection/client/anomaly-detection/mock-data/two-metrics-with-anomalies.json:2
Run Code Online (Sandbox Code Playgroud)
所以我把它改成只提供文件而不是"包含"它们:
files = [
...
{ pattern: 'mock-data/**/*.json', included: false }
...
]
Run Code Online (Sandbox Code Playgroud)
既然他们只是服务,我想我会尝试在我的规范中使用$ http加载文件:
$http('mock-data/two-metrics-with-anomalies.json')
Run Code Online (Sandbox Code Playgroud)
当我运行我收到的规范时:
Error: Unexpected request: GET mock-data/two-metrics-with-anomalies.json
Run Code Online (Sandbox Code Playgroud)
在我的理解中意味着它期望来自$ httpBackend的模拟响应.所以...在这一点上我不知道如何使用Angular实用程序加载文件,所以我想我会尝试jQuery,看看我是否至少可以让它工作:
$.getJSON('mock-data/two-metrics-with-anomalies.json').done(function(data) {
console.log(data);
}).fail(function(response) {
console.log(response);
});
Run Code Online (Sandbox Code Playgroud)
这导致:
Chrome 27.0 (Mac) LOG: { readyState: 4,
responseText: 'NOT FOUND',
status: 404,
statusText: 'Not Found' …Run Code Online (Sandbox Code Playgroud) karma-runner ×10
node.js ×4
angularjs ×3
javascript ×2
npm ×2
angular ×1
angular-cli ×1
gruntjs ×1
gulp ×1
jasmine ×1
mocha.js ×1
protractor ×1
teamcity ×1
terminal ×1
testing ×1
unit-testing ×1