karma
About
目前看到angular2+ 官方的使用是 karma + jasmine
Can I use Karma with testing framework X?
Yes. There are plugins for most of the common testing frameworks (such as Jasmine, Mocha, QUnit). If there is no plugin for the testing framework you like, go ahead and write one. It is simple - you can start by looking into the source code of the existing ones.
karma创建一个web server。
浏览器通过手动方位 karma server 监听的地址(默认9876),或者自动让karma 知道运行哪个browsers,来让浏览器可以被捕获
可用的列表http://karma-runner.github.io/5.0/config/browsers.html
karma 能力
见下面 paper的pdf内容
在真实环境中测试
支持远程控制
执行速度快
可以跟第三方 IDE 进行交互
支持 ci 服务
高扩展性,支持插件开发
支持调试
对比
paper 3.1的表
主要目标
paper 2.1
真实设备上运行测试
远程控制
高效, 无缝隙使用流程
Integration with IDEs and text editors
Integration with CI Servers
扩展性
Debugging
包含 client/server,基于Http 通信
设计和分析
Chapter 4
速度
可靠性
在真实浏览器上测试 并
seamless workflow
服务端
paper 4.1
监听文件
与 client 进行通讯
向开发者输出测试结果
提供 client 端所需的资源文件
Manager
跟client双向通讯,例如开始和结束测试,收集测试结果
Web Server
Web Server, 给客户端提供静态资源文件
Reporter
给开发者输出报告
File System Watcher
检测变化并通知client,类似 一些热更新之类的?
Client
可以 多client 对1个server
Manager
和server双向通信
Testing Framework
框架内自己没有,可以用很多三方的framework,例如上面的jasmine
Tests and Code under Test
这是开发者编写的内容了
…….我感觉阿里社区里面那个翻译也不错。。可以不用继续啃英文了
总结
测试的代码 全部在客户端运行,这个客户端是真实的客户端,它可以是chrome,firefox等等
karma主要的工作是支撑测试的提供,例如静态文件服务,文件变化监听等,而具体代码测试内容是在karma启动的客户端(浏览器)中,依靠用户编写的测试代码和第三方测试框架完成的。
refs
http://karma-runner.github.io/5.0/intro/how-it-works.html
https://raw.githubusercontent.com/karma-runner/karma/master/thesis.pdf
https://fed.taobao.org/blog/taofed/do71ct/karma-origin/
https://medium.com/@me_37286/yoni-goldberg-javascript-nodejs-testing-best-practices-2b98924c9347