源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

angularjs中的单元测试实例

  • 时间:2021-02-21 09:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:angularjs中的单元测试实例
当ng项目越来越大的时候,单元测试就要提上日程了,有的时候团队是以测试先行,有的是先实现功能,后面再测试功能模块,这个各有利弊,今天主要说说利用karma和jasmine来进行ng模块的单元测试. [b]什么是Karma[/b] karma是一个单元测试的运行控制框架,提供以不同环境来运行单元测试,比如chrome,firfox,phantomjs等,测试框架支持jasmine,mocha,qunit,是一个以nodejs为环境的npm模块. 安装测试相关的npm模块建议使用----save-dev参数,因为这是开发相关的,一般的运行karma的话只需要下面两个npm命令
[url=http://karma-runner.github.io/0.12/config/configuration-file.html]点击这里 [/url] karma就讲到这里,想了解更多关于它的信息可以,[url=http://karma-runner.github.io/]点击这里 [/url] [b]什么是jasmine[/b] Jasmine is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests. 上面是jasmine官方文档里对它的解释,下面用中文简单的翻译下 jasmine是一个行为驱动开发的测试框架,不依赖任何js框架以及dom,是一个非常干净以及友好API的测试库. 下面简单的以一个例子来说明它的用法 定义一个测试文件命令为test.js
[url=http://jasmine.github.io/1.3/introduction.html]点击这里 [/url] 1.首先任何一个测试用例以describe函数来定义,它有两参数,第一个用来描述测试大体的中心内容,第二个参数是一个函数,里面写一些真实的测试代码 2.it是用来定义单个具体测试任务,也有两个参数,第一个用来描述测试内容,第二个参数是一个函数,里面存放一些测试方法 3.expect主要用来计算一个变量或者一个表达式的值,然后用来跟期望的值比较或者做一些其它的事件 4.beforeEach与afterEach主要是用来在执行测试任务之前和之后做一些事情,上面的例子就是在执行之前改变变量的值,然后在执行完成之后重置变量的值 最后要说的是,describe函数里的作用域跟普通JS一样都是可以在里面的子函数里访问的,就像上面的it访问foo变量 想要运行上面的测试例子可以通过karar来运行,命令例子如下:
[url=https://docs.angularjs.org/guide/controller]点击这里 [/url] [b]ng里指令的单元测试[/b] [b]定义一个简单的指令[/b]
[url=https://code.angularjs.org/1.2.21/docs/guide/directive]点击这里 [/url] [b]ng里的过滤器单元测试[/b] 定义一个简单的过滤器
[u]复制代码[/u] 代码如下:
var app = angular.module('myApp', []); app.filter('interpolate', ['version', function(version) {     return function(text) {       return String(text).replace(/\%VERSION\%/mg, version);     };   }]);
然后编写一个简单的测试脚本
[u]复制代码[/u] 代码如下:
describe('filter', function() {   beforeEach(module('myApp'));   describe('interpolate', function() {     beforeEach(module(function($provide) {       $provide.value('version', 'TEST_VER');     }));     it('should replace VERSION', inject(function(interpolateFilter) {       expect(interpolateFilter('before %VERSION% after')).toEqual('before TEST_VER after');     }));   }); });
上面的代码先配置过滤器模块,然后定义一个version值,因为interpolate依赖这个服务,最后用inject注入interpolate过滤器,注意这里的过滤器后面得加上Filter后缀,最后传入文本内容到过滤器函数里执行,与期望值进行对比. [b]总结[/b] 利用测试来开发NG有很多好处,可以保证模块的稳定性,还有一点就是能够深入的了解ng的内部运行机制,所以建议用ng开发的同学赶紧把测试补上吧!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部