2019独角兽企业重金招聘Python工程师标准>>>

一、搭建自动化的前端开发、调试和测试环境

我们先来看一个完整的项目实例,这是AngularJS官方为我们提供的Phonecat项目。在AngularJS的官方网站上有详细的指导,有兴趣的朋友可以去看看,地址:http://docs.angularjs.org/tutorial。

Phonecat项目源码托管在GitHub上,我们通过git来下载源码:

git clone --depth=14 https://github.com/angular/angular-phonecat.git

如果不能下载,请将命令中的https替换成ssh。

Phonecat项目运行在Nodejs上,请确保你的系统里有NodeJS环境,下载完成后我们进入Phonecat目录,运行下面的命令安装项目依赖。

npm install

运行该命令后,会在angular-phonecat项目路径下安装以下依赖包:

Bower . 包管理器

Http-Server . 轻量级Web服务器

Karma . 用于运行单元测试

Protractor . 用于运行端到端测试

完成上述操作之后,我们在angular-phonecat目录里执行下面的命令

npm start

PhoneCat运行后,可以在浏览器中打开http://localhost:8000/app/index.html来访问该Web应用

OK,现在我们可以通过protractor来自动运行测试,protractor是一款自动测试工具,它可以自动打开本机的浏览器,运行当前项目,模拟用户的选择、输入、滑动等操作来测试项目。

npm run protractor

通过这个项目我们可以看出自动化的构建和测试对前端来说尤其重要,但有时我们在想,我们到底需要一个什么样的前端开发环境呢?

1、首先我们需要一个款强大的代码编辑工具

2、一款易用的断点调试工具,尤其是在做JS调试时

3、一款拉风的版本管理工具,说到这里大家会想到的是就是Git,像SVN就不要了吧

4、一款代码合并和混淆工具

5、依赖管理工具

6、单元测试工具,以前我们的代码只能在浏览器环境里跑,所以每次的测试都离不开浏览器,过程也很繁琐,现在我们可以依赖NodeJS环境,来跑单元测试,这样就脱离的浏览器,做到自动的单元测试

7、集成测试工具,当我们完成整个项目的开发后,进入测试阶段,我们需要一款足够强大的全面的测试工具来帮我们完成整个项目的测试。

二、常用工具的介绍

1、代码编辑工具:

说到代码编辑工具,前端的朋友都会推荐Sublime了,是的,这是一款前端轻量级的强大的代码编辑工具,支持多种编程语言,其使用方法和插件的安装在百度上会找的很多。

代码编辑工具除了上面说到的Sublime之外呢,还有一款重量级的,Webstorm,这款工具比较大,但功能确实很强大,插件里首先就支持了AngularJS,如果你的电脑比较好,可以考虑使用这款工具。

2、断点调试工具:

chrome插件Batarang,我们可以在chrome的设置里安装这个断点调试工具

3、版本管理工具

在这个技术日新月异的年代,我们当然要用上比较高大上的工具,版本管理,自然我们会使用Git这样强大的分布式版本管理工具,具体使用方法,在我的博客里有比较详细的讲解。

4、开发和调试工具:

我们用的很多这样的工具都依赖一个环境,这就是NodeJS,所以首先我们需要在自己的电脑上安装并配置好NodeJS,其次就是npm,这是NodeJS的一个包管理器,使用npm我们可以解决很多依赖包的安装和配置工作。

5、代码合并和混淆工具:

Grunt,这款工具也是在NodeJS环境下安装的,我们可以使用npm来安装grunt,然后我们在项目中,使用npm来安装一些grunt会使用到的插件,基本的包括uglify(代码混淆)、concat(合并文件)、watch(监控文件变化)。

6、依赖管理工具

Bower,这款工具可以自动安装依赖的组建,包括对这些依赖的检测和版本之间兼容性的检测,关于Bower的具体使用可以参考百度。

7、轻量级Server

http-server,这是一款基于NodeJS的http-server工具,它可以把你电脑上的任意一个目录变成Web服务目录。我们可以通过npm把它安装到全局,然后在需要测试的项目目录里运行http-server即可。

8、单元测试runner

我们先来看下单元测试神器:Karma,它只是用来跑测试用例的容器,并没有提供一套用来编写测试用例的语法,所以我们需要另外一款工具来配合,那就是Jasmine,它提供了一套比较简洁的语法,来编写测试用例。

Jasmine的四个核心概念:分组、用例、期望、匹配,它们分别对应Jasmine的四个函数:

describe(string,function) 这个函数表示分组,也就是一组测试用例

it(string,function) 这个表示单个的测试用例

expect(expression) 表示期望expression这个表达式会返回某个值或具有某种行为

to***(arg) 这个表示匹配

下面我们通过一个例子来看下这个单元测试的过程。首先我们需要在测试目录里安装必要的模块,这里我们新建并进入karmaTets目录,在此目录下通过npm或cnpm安装karma、karma-chrome-launcher、karma-coverage和karma-jasmine,安装过程这里就不再赘述了。

上述的安装完成之后,我们在目录中新建src目录,在这里个目录里新建一个index.js文件,写上一个简单的函数,这个函数的作用是把传入的参数字符串进行反转,如abc返回cba,js代码如下:

function reverse(name) {return name.split("").reverse().join("");
}

接下来我们再新建一个目录test,表示是测试目录,里面分别有两个目录,一个是unit,单元测试,一个是e2e,表示是集成测试目录。我们在unit目录新建一个测试文件,叫testCase.js,输入以下内容

describe("A suite", function(){it("contains spec with an expectation", funtion(){console.log("This is msg from log...");expect(true).toBe(true);});
});describe("A suite of basic functions", function(){it("reverse word", function(){expect("DCBA").toEqual(reverse("ABCD"));expect("damo").toEqual(reverse("omad"));});
});

然后我们在命令行下,执行karma init来初始化karma,并配置karma.conf.js文件,完成之后我们就可以使用karma start来启动测试,结果会在命令行打印出来。

9、专为AngularJS定制的测试工具 -- Protractor

Protractor是一款集成测试工具,专门为ANgularJS应用而设计的,它是基于WebDriverJS的,原理就是利用WebDriverJS,借助NodeJS直接调用浏览器的接口。我们可以通过下面的地址去了解这款工具

https://github.com/angular/protractor

https://code.google.com/p/selenium/wiki/WebDriverJs

转载于:https://my.oschina.net/u/2399867/blog/644634

AngularJS学习笔记之二:开发、调试和测试工具相关推荐

  1. 软件调试学习笔记(二)—— 调试事件的采集

    软件调试学习笔记(二)-- 调试事件的采集 要点回顾 调试事件的种类 调试事件采集函数 例:分析PspUserThreadStartup 例:分析PspExitThread 总结 要点回顾 调试器与被 ...

  2. AngularJs学习笔记(二)

    1.指令 ng-** --> angularJs内置的指令 自定义指令: app.directive(name,function(){}); 指令命名:采用驼峰式 前缀一般是工程名字的缩写 后缀 ...

  3. Auto.js学习笔记1:开发需要准备什么工具和编程语言知识?

    什么是Auto.js? 根据官方文档定义:Auto.js是一款无需root权限的JavaScript自动化软件. Auto.js是一款安卓手机的应用主要用webview,和微信一样,安装在手机上: A ...

  4. 【廖雪峰Python学习笔记】错误、调试、测试

    文章目录 错误处理 调试 单元测试unitcase 文档测试 错误类型 程序编写问题bug – 字符类型错误等 用户输入错误 – 输入不符合规定的字符串 异常,程序运行时无法预测 – 磁盘满了,无法写 ...

  5. JUnit4学习笔记(二):参数化测试与假定(Assumption)

    一.一个简单的测试 编写一个只有一种运算的计算器: 1 public class Calculator { 2 public static double divide(int dividend, in ...

  6. 学习笔记(工作时写的测试工具,20220228,IMDS250数据落地(自用))

    GUI部分,IMDS250_gui # -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'untit ...

  7. Redis学习笔记(二)SpringBoot整合

    Redis学习笔记(二) SpringBoot整合 测试 导入依赖 查看底层 配置连接 测试连接 自定义`RedisTemplate` 在开发中,一般都是以json来传输对象: 所以实际开发中所有对象 ...

  8. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础

    Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...

  9. “物联网开发实战”学习笔记-(二)手机控制智能电灯

    "物联网开发实战"学习笔记-(二)手机控制智能电灯 如果搭建好硬件平台后,这一次我们的任务主要是调试好智能电灯,并且连接到腾讯云的物联网平台. 腾讯云物联网平台 腾讯物联网平台的优 ...

最新文章

  1. iOS 隐藏下级页面的tabbar的统一处理
  2. sklearn自学指南(part22)--支持向量机的分类与回归
  3. 解读Facebook CAN:如何给人工智能赋予艺术创作的力量
  4. Android Studio 导入新工程项目
  5. UIActivityIndicatorView创建的菊花隐藏不掉问题
  6. python期末考试及答案单引号、双引号和三引号_python脚本中单引号’ 双引号“ 三个单引号‘’‘ 三个双引号”“” 差别 及反斜杠的用法...
  7. IK摆锤冲击试验装置能在什么场合使用?
  8. 3dMax模型的重置变换
  9. HMC5883L电子罗盘/指南针实现,附带校准方法(附STM32 源码)
  10. 常用统计算法JAVA实现 - 峰度(07)
  11. JAVA Exception Handing
  12. 华为路由器6to4隧道原理及配置
  13. 转载:电脑cmd命令怎么测试网速详细步骤
  14. Mobile(3)-攻防世界-APK逆向
  15. 5个超好用的图片素材库,建议收藏~
  16. 在Spring MVC框架下利用RESTful API和MongoDB实现用户留言与邮件反馈
  17. java计算器 控制台_java控制台实现的简单小系统,支持计算器功能,日历、乘法表算法...
  18. ImageNet数据集下载及整理
  19. 【产业互联网周报】互联网集体进入调整期:张勇兼任阿里云总裁,卢伟冰晋升小米集团总裁,小鹏组织架构调整;...
  20. 计算机主机无法开机故障原因,惠普电脑开不了机怎么办 惠普电脑开不了机是什么原因 惠普电脑开机常见问题...

热门文章

  1. 多对多关联映射(双向关联)见项目:me_many_to_many
  2. cookie与session以及他们的常规用途——web开发必须熟知的知识
  3. android瀑布流效果(仿蘑菇街)
  4. python pip安装+easy_install
  5. 用一句位运算判断两个整数的大小并返回较大者
  6. 三层交换的测试1:级联的傻HUB
  7. 在GridView的行绑定中应用Animation动画效果
  8. 自定义一个ImageSwitcher
  9. 毕业五年同是程序员为什么差距这么大?他年薪百万,他月薪一万
  10. 苹果原生文字转语音播报