位置: 编程技术 - 正文

使用Jasmine和Karma对AngularJS页面程序进行测试

编辑:rootadmin

推荐整理分享使用Jasmine和Karma对AngularJS页面程序进行测试,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

AngularJS是继jQuery之后发生在JavaScript上最好的东西。这也是JavaScript开发一直以来想要的方式。Angular主要的优点之一就是它的依赖注入(Dependency Injection),它非常利于代码的单元测试。但有点小怪异的是,我在无论如何都没能找到一个介绍如何做单元测试的教程。

当然有很多不错的推荐:使用Jasmine测试框架和Karma测试执行器(Test Runner);但是并没有一篇完整的从无到有指导如何测试的教程。所以我写了这篇文章。我在网上找了很多资源才知道如何去做,而你现在不需要去做这些(如果一开始就看到这篇文章的话)。

请告诉我你看到的任何错误,直到我能说这是基于Karma和Jasmine测试Angular应用的最佳实践。

介绍

这篇文章会引导你安装使用Karma和Jasmine做自动化测试所需要的所有工具。我不在乎你实在使用TDD(测试驱动开发)还是TAD(测试辅助开发),在这篇文章中,我假设你已经有一个文件需要测试。

安装Karma

如果你没有安装 Node.js,那么请自行下载和安装。安装之后,打开终端或命令行输入一下命令:

文件结构

文件结构是跟我们的议题关联不大,但是在接下来的测试中,我使用的文件结构如下:

*我并不主张这种文档结构,我展示它只是为了测试举例。

配置Karma

切换到你想要放置配置文件的目录,然后在终端中输入下面的命令来创建配置文件:

你会被询问一些问题,包括你想使用那个测试框架,你是否需要自动监测文件,包含哪些测试和被测试文件等。在我们的教程中,我们保留‘Jasmine'作为我们默认的框架,开启文件自动监测,并包含下面的文件:

这些都是相对路径,包含了1)父目录下的所有.js文件,2)父目录下的所有子目录下的所有.js文件,3)当前目录下的angular-mock.js,4)以及当前目录(包含子目录)下所有的.tests.js文件(我喜欢以这样的方式来区分测试文件和其他的文件)。

不管你选择了什么文件,请确保你引入了 angular.js,angular-mock.js,以及其他你需要使用的文件。

启动Karma

现在已经可以启动Karma了,依然在终端中输入:

使用Jasmine和Karma对AngularJS页面程序进行测试

这个命令会在你的电脑上启动你在配置文件中列出的浏览器。这些浏览器都会以socket的方式连接到Karma的实例上,你会看到一组活动的浏览器并被告知她们是否在执行测试。我但愿Karma已经告诉你在每个浏览器上的最终测试结果总结(比如个中的个通过,1个失败),遗憾的是你只能通过终端窗口看到这些信息。

Karma的一个很突出的特色是你可以在网络中使用任何设备连接并测试你的代码。试一下将你的手机浏览器指向Karma服务,你可以在电脑上任何一个运行的浏览器上找到这个测试的URL地址。它应该类似于: [你在网络上的IP地址]:/&#;id=. 因为Karma是在运行一个 Node.js 实例,你的测试机器就像一个web服务器一样,会将测试发送到任何指向它的浏览器。

基本的测试

我们假设你已经有一个文件需要测试。我们要使用到的 home.js 文件如下:

home.js

我们可以在 home.test.js 文件中创建我们的测试用例。我们从简单的那个测试开始:$scope.text 应该等于 ‘Hello World!'。 为了完成这个测试,我们需要模拟我们的 Application 模块以及 $scope 变量。我们会在Jasmine的 beforeEach 方法中做这个工作,这样的话我们在每个测试用例开始时可以有一个全新的(干净的)controler和scope对象。

home.tests.js

从代码中你可以看到我们注入了我们自己的 scope,因此我们可以在它的外部验证它的信息。同时,别忘了模拟模块本身(第7行代码)!我们现在已经为测试做好了准备:

home.tests.js

如果你运行这个测试,它可以在任何指向Karma的浏览器中执行,并且测试通过。

发送$resource请求

现在我们已经准备好测试 $resource 请求。要完成这个请求,我们需要使用到 $httpBackend, 它一个模拟版本的Angular $http。我们会创建另一个叫做 $httpBackend 的变量,在第二个 beforEach块中,注入 _$httpBackend_ 并将新创建的变量指向 _$httpBackend_。接下来我们会告诉 $httpBackend 如何对请求做出响应。

我们的测试: home.tests.js

都放到一起

home.tests.js

技巧

Karma会运行所有文件中的所有测试用例,如果你只想运行所有测试的一个子集,修改 describe 或 it 为 ddescribe 或 iit 来运行个别的一些测试。如果有些测试你不想运行他们,那么修改 describe 或 it 为 xdescribe 或 xit 来忽略这些代码。

你也可以在html文件的页面上运行你的测试。举例的代码如下:home.runner.html

Node.js模块封装及使用方法 Node.js中也有一些功能的封装,类似C#的类库,封装成模块这样方便使用,安装之后用require()就能引入调用.一、Node.js模块封装1.创建一个名为censorify的文件

Node.js程序中的本地文件操作用法小结 Node最引以为傲的就是它有一个非常小的核心。有一些语言绑定了完整的POSIXAPI,而Node实现了尽可能少的绑定,并通过同步、异步或流API形式暴露他们。

三种Node.js写文件的方式 本文分享了Node.js写文件的三种方式,具体内容和如下1、通过管道流写文件采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过

标签: 使用Jasmine和Karma对AngularJS页面程序进行测试

本文链接地址:https://www.jiuchutong.com/biancheng/370690.html 转载请保留说明!

上一篇:Node.js操作Firebird数据库教程(node.js操作文件)

下一篇:Node.js模块封装及使用方法(node.js模块化)

  • 进项税额转出完整会计分录怎么做 案例
  • 营业外收入要交企业所得税吗
  • 房地产开发企业土地增值税预缴
  • 提前买礼物
  • 城镇土地使用税减免税政策
  • 企业经营的范围怎么写
  • 小规模纳税人哪些发票可以抵税
  • 企业申报表有异常期间可以更换财务负责人吗
  • 咨询公司所得税税负率是多少合适
  • 搬家费账务处理
  • 研发费用加计扣除条件
  • 供热企业不得抵扣的进项计算
  • 公司债券投资的优缺点
  • 产品成本核算方法体系的内容包括
  • 以前借款没做账现在收回来怎么做账务处理?
  • 车辆保险赔款怎么入账
  • 隔月红冲发票对报税有影响
  • 为别人开发票先收的税金怎么入帐?
  • 支付给银行的借款利息属于什么会计要素
  • 土地款可以抵扣土地增值税么
  • 计提工会经费是按应付职工薪酬的借方还是贷方
  • 主体资格的法律规定
  • 以前年度留抵用完 不能抵欠税
  • 拿到进项票下一步做啥
  • 餐听发票可以开专用发票吗?
  • 期末留抵税额转出怎么报税
  • 递延所得税收益计算公式
  • 劳务成本月底有余额吗
  • 资产负债表待摊费用出现负数
  • 债权性投资和权益性投资的区别
  • 车票进项税可以跨年抵扣吗
  • 印花税的计税依据是销项和进项的金额
  • 补助是按基本工资还是总工资
  • 冲销多计提个税怎么做账
  • 总公司给子公司打款 如何做凭证
  • ptssvc.exe - ptssvc是什么进程 有什么用
  • windows 11硬件
  • php 设计模式
  • 笔记本电池保养注意事项
  • wordpress登录入口
  • 委托加工不提供原材料会计分录
  • laravel实战教程
  • ROS2+cartographer+激光雷达+IMU里程计数据融合(robot_locazation) 建图
  • 固定资产净残值率是多少
  • 股权转让实操
  • Element UI - v-infinite-scroll无限滚动组件
  • html代码form
  • PyTorch深度学习实战 | 神经网络的优化难题
  • 企业所得税资产总额根据什么填
  • 现金流量表季报本月数是三个月的数据吗
  • vue生命周期钩子函数
  • 支付宝支付凭证在哪里查
  • 收回已冲销的应收账款会计分录
  • 长期待摊费用最低摊销年限
  • 对公账户往来款需要归还吗
  • mysql复制数据到另一张表
  • sql server新增数据
  • 企业常用会计科目表及其解释
  • 海关缴款通知书怎么查看
  • 自行申报啥意思
  • 进口材料海关需要什么手续
  • 建筑行业项目经理的岗位职责
  • 财务专用章的效力
  • u盘装机大师手机下载电脑版
  • redhat常用命令总结
  • centos7挂载cdrom
  • centos安装vim命令
  • win7宽带连接错误651怎么办
  • win8的ie打开马上闪退
  • jquery 点击按钮
  • python火车订票系统
  • ssh自动输入密码登录
  • python自动发邮件内容
  • jquery按钮点击事件
  • js promises
  • unity操作教程
  • 深圳税务局官方客服电话
  • 普洱房产管理局官网
  • 广东省广州电子税务局
  • 南宁市税务局稽查局领导
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设