我一直在计划研究如何测试我的AngularJS应用程序超过6个月了。不幸的是,由于我是唯一的前端开发人员,我对功能请求感到非常沮丧。我无法抽出时间进行单元测试。但是,我在Agile Sprint期间告诉团队,我应该添加单元测试代码。我能够申请3天专门用于学习单元测试。
我实际上已经做过研究了。我找到了卡玛。我记得安装它。今天,我又安装了它。现在我很困惑。当我执行unix find时,这就是我得到的。
19:29 ~/repos/baam/baam-ui $ find ~/.npm -name 'karma*'
/Users/admin/.npm/chai/1.9.1/package/karma.conf.js
/Users/admin/.npm/chai/1.9.1/package/karma.sauce.js
/Users/admin/.npm/deep-eql/0.1.3/package/karma.conf.js
/Users/admin/.npm/karma
/Users/admin/.npm/karma/0.12.12/package/bin/karma
/Users/admin/.npm/karma/0.12.12/package/integration-tests/coffee/karma.conf.coffee
/Users/admin/.npm/karma/0.12.12/package/integration-tests/coverage-coffee/karma.conf.coffee
/Users/admin/.npm/karma/0.12.12/package/integration-tests/coverage-jasmine/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/coverage-mocha-requirejs/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/coverage-qunit/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/dojo/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/html2js/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/jasmine/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/jasmine_2/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/junit/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/live-script/karma.conf.ls
/Users/admin/.npm/karma/0.12.12/package/integration-tests/mocha/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/qunit/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/requirejs/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/integration-tests/saucelabs/karma.conf.js
/Users/admin/.npm/karma/0.12.12/package/karma-0.12.11.tgz
/Users/admin/.npm/karma/0.12.12/package/karma-completion.sh
/Users/admin/.npm/karma/0.12.12/package/lib/middleware/karma.js
/Users/admin/.npm/karma/0.12.12/package/static/karma.js
/Users/admin/.npm/karma/0.12.14/package/bin/karma
/Users/admin/.npm/karma/0.12.14/package/integration-tests/coffee/karma.conf.coffee
/Users/admin/.npm/karma/0.12.14/package/integration-tests/coverage-coffee/karma.conf.coffee
/Users/admin/.npm/karma/0.12.14/package/integration-tests/coverage-jasmine/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/coverage-mocha-requirejs/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/coverage-qunit/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/dojo/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/html2js/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/jasmine/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/jasmine_2/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/junit/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/live-script/karma.conf.ls
/Users/admin/.npm/karma/0.12.14/package/integration-tests/mocha/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/qunit/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/requirejs/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/integration-tests/saucelabs/karma.conf.js
/Users/admin/.npm/karma/0.12.14/package/karma-0.12.13.tgz
/Users/admin/.npm/karma/0.12.14/package/karma-completion.sh
/Users/admin/.npm/karma/0.12.14/package/lib/middleware/karma.js
/Users/admin/.npm/karma/0.12.14/package/static/karma.js
/Users/admin/.npm/karma/0.12.16/package/bin/karma
/Users/admin/.npm/karma/0.12.16/package/karma-completion.sh
/Users/admin/.npm/karma/0.12.16/package/lib/middleware/karma.js
/Users/admin/.npm/karma/0.12.16/package/static/karma.js
/Users/admin/.npm/karma-chai
/Users/admin/.npm/karma-chrome-launcher
/Users/admin/.npm/karma-coverage
/Users/admin/.npm/karma-firefox-launcher
/Users/admin/.npm/karma-jasmine
/Users/admin/.npm/karma-mocha
/Users/admin/.npm/karma-ng-html2js-preprocessor
/Users/admin/.npm/karma-ng-scenario
/Users/admin/.npm/karma-phantomjs-launcher
/Users/admin/.npm/karma-requirejs
/Users/admin/.npm/registry.npmjs.org/karma
/Users/admin/.npm/registry.npmjs.org/karma-chai
/Users/admin/.npm/registry.npmjs.org/karma-chrome-launcher
/Users/admin/.npm/registry.npmjs.org/karma-coverage
/Users/admin/.npm/registry.npmjs.org/karma-jasmine
/Users/admin/.npm/registry.npmjs.org/karma-mocha
/Users/admin/.npm/registry.npmjs.org/karma-ng-html2js-preprocessor
/Users/admin/.npm/registry.npmjs.org/karma-ng-scenario
/Users/admin/.npm/registry.npmjs.org/karma-phantomjs-launcher
看起来我现在有多个版本。我手动执行了karma二进制文件,我得到了这个输出。
module.js:340
throw err;
^
Error: Cannot find module 'optimist'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/admin/.npm/karma/0.12.14/package/lib/cli.js:2:16)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
我无法回想起我之前关注过哪些教程,所以我不确定自己执行了哪些命令。我还在Angular项目中看到了karma.conf.js。我不知道为什么我有一个。档案日期为2014年7月12日。
我不确定如何重新启动我的业力安装而不影响我的项目。我希望有一个干净而有效的业力。我还想学习如何测试我的应用程序。
哦,我还记得读过量角器,但我不知道我是否安装了量角器。我想用最好的角度单位测试。到目前为止,我读到了它的业力。
答案 0 :(得分:1)
你在不同版本看到的是npm缓存。 npm将缓存所有软件包及其下载的所有版本,以便在需要时再安装它们会更快。
你需要做的是安装业力作为开发依赖(npm install karma --save-dev
)以及你想要在其中使用的所有业力'插件'(以karma-
开头的东西)你想用它们的项目。
Karma只是一名测试运动员,您最终会在mocha或jasmine之类的内容中编写测试。 Karma基本上启动服务器,启动一些浏览器(或者你可以手动连接)并运行你的测试文件。然后它会得到结果并将它们输出到您选择的“记者”(如控制台/终端)。
还有像chai和sinon这样的东西可以很好地与mocha配合使用,以便于测试。通常有karma插件版本,甚至是karma-chai-sinon
Karma使用config file(通常名为karma.conf.js)告诉它使用什么记者,使用什么测试框架,自动测试哪些浏览器,哪些文件可通过服务器访问跑步等等。
您可以将任务运行器(例如gulp与gulp-karma)放在最上面,这样您就可以构建项目,然后在一个命令中对其进行全部测试。
您还希望ngMocks为角度编写测试。
量角器是由角度团队制作的端对端测试仪,用于角度测量。