首先我们会写一个简单的基于AngularJs的应用。

html代码:

<html>

<head>

<script src='angula.js'></script>

</head>

<body>

<div ng-app='demoApp'>

<div ng-controller='demoController'>

{{name}}

</div>

</div>

<script src='demo.js'></script>

</body>

</html>

demo.js代码:

var app = angular.module('demoApp', []);

app.controller('demoController', ['$scope', function ($scope) {

}]);

OK。在我们有了基本的js文件后,我们就需要写我们测试文件了。我们使用的测试工具是karma,karma的配置文件里的frameworks使用的是Jasmine。

在完成karma的配置后,我们就应当着手写测试文件了。

首先,在写测试的时候,我们一定要明白自己测试的期望是什么,目标是什么,测试的用例有哪些。当我们清楚明白地知道自己想要测什么的时候,就以写出优雅的测试代码以及漂亮的功能代码。

开始写测试文件,demo.test.js:

我要测angular的controller, demoController, 于是我就describe('demoController', function () {});

之后我要拿到我要测试的期望目标啊,于是我们接着写:

describe('demoController', function () {

  var $controller;

  beforeEach(function () {

    module('demoApp');

    inject(function ($injector) {

      $controller = $injector.get('$controller')

    });

  });

})

写到这里,我们就要想了,测demoController 的什么呢,于是,我们case来了,比如说,我们期望$scope.name 是 'Hello world':

describe('demoController', function () {

  var $controller;

  beforeEach(function () {

    module('demoApp');

    inject(function ($injector) {

      $controller = $injector.get('$controller')

    });

  });

  it('$scope.name should be equal hello world', function () {

    var $scope;

    $scope = {}

    $controller('demoController', {$scope: $scope})

    expect($scope.name).toEqual('Hello world');

  });

});

OK,我们的测试写完了,使用karma命令来跑测试. 99%测试一定会挂,为什么呢?因为我们的demo.js里,demoController中还没有$scope.name.并且我们期望$scope.name = 'Hello world'.于是,在demo.js里写上:

app.controller('demoController', ['$scope', function ($scope) {

  $scope.name = 'Hello world';

}]);

运行测试,Bingo!

好了,我们可以继续TDD了。

写漂亮的测试,写优雅的代码。Make it run.

转载于:https://www.cnblogs.com/Yaxian/p/4960436.html

AngularJs的TDD相关推荐

  1. 基于Angularjs+jasmine+karma的测试驱动开发(TDD)实例

    简介(摘自baidu) 测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法.它要求在编写某个功能的代码之前先编写测试代码,然 ...

  2. AngularJS开发人员最常犯的10个错误

    简介 AngularJS是目前最为活跃的Javascript框架之一,AngularJS的目标之一是简化开发过程, 这使得AngularJS非常善于构建小型app原型,但AngularJS对于全功能的 ...

  3. AngularJS 的异步服务测试与Mocking

    测试 AngularJS 的异步服务 最近,在做项目时掉进了 AngularJS 异步调用 $q 测试的坑中,直接躺枪了.折腾了许久日子,终于想通了其中的道道,但并不确定是最佳的解决方案,最后还是决定 ...

  4. angularjs常见错误_AngularJS开发人员应避免的7大错误

    angularjs常见错误 AngularJS is one of the powerful tools, used for managing the display of data. It is t ...

  5. 《AngularJS深度剖析与最佳实践》一1.5 实现更多功能:主题

    本节书摘来自华章出版社<AngularJS深度剖析与最佳实践>一书中的第1章,第1.5节,作者 雪狼 破狼 彭洪伟,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...

  6. Build Your Own Angularjs 读书笔记(AngularJS牛逼的地方在于它内嵌了一个表达式到Function对象的编译器。。。当然还有DI框架)

    Build Your Own Angularjs 读书笔记 目录 [隐藏] 1 项目配置 2 作用域 3 表达式与过滤器 4 模块与依赖注入 5 辅助函数 6 指令 项目配置[编辑] npm pack ...

  7. AngularJS介绍

    AngularJS介绍–AngularJS的前世今生 AngularJS是什么 在Web开发领域,我们一般使用HTML作为前端页面元素的声明式语言,使用CSS技术作为展示样式的描述语言,JavaScr ...

  8. AngularJS实战第一章

    AngularJS实战 作者:kimmking.大漠穷秋.任富飞 问题反馈:kimmking@163.com 快速上手 AngularJS介绍-AngularJS的前世今生 AngularJS核心特性 ...

  9. Golang TDD实践报告:快速排序Quick Sort

    Golang TDD实践报告:快速排序Quick Sort [阅读时间:约5分钟] 0.项目需求 1.编写符合项目输入输出的一个测试 2.尝试运行测试 3.先使用最少的代码来让失败的测试先跑起来 4. ...

  10. AngularJS和DataModel

    通常,在AngularJS中使用JSON作为存储数据的模型.我们可能这样在controller中写model: app.controller('BookController',['$scope',fu ...

最新文章

  1. A100 GPU硬件架构
  2. 编译httpd-2.4.46的RPM包
  3. Kona 8:鹅厂基于OpenJDK开源的JDK
  4. 开发日记-20190701 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 7
  5. 如何合理使用java异常_如何更合理的利用Java中的异常抛出?
  6. python对windows进行操作_【转】python 操作windows下的目录
  7. Cpp 对象模型探索 / 虚继承带虚函数的基类的子类的内存布局
  8. Android -- 自定义权限
  9. reStructuredText
  10. linux小红帽实验心得,《小红帽》阅读后心得总结
  11. python已知y求x_Python刷题:集合S(k)求|x-y|最小时的x和y(位运算)
  12. 51单片机外围模块——DS1302时钟模块
  13. 51单片机外围模块——红外通信
  14. opper、vivo手机微信小程序扫码后请求后台报400错误
  15. php手册之Callback 回调类型
  16. mysql金额分隔符_mysql分隔符
  17. 在win桌面上添加系统图标
  18. matlab输出以下图形,输出高品质MATLAB图形的方法与技巧_陈丽安.pdf
  19. 开关电源MOS管选型500V、600V、650V参数
  20. postman显示返回的base64图片验证码、二维码

热门文章

  1. 30天自制操作系统之叠加处理
  2. c语言教程求反符号,c语言“或”符号
  3. 单片机之串行通信接口遇到的问题
  4. 做一个简单的python爬虫_python制作一个简单网络爬虫
  5. 【渝粤教育】国家开放大学2018年春季 0242-21T机械制图 参考试题
  6. 【渝粤教育】国家开放大学2018年春季 3781-21T燃气燃烧技术与设备 参考试题
  7. 【渝粤教育】国家开放大学2018年秋季 2632T城市轨道交通客运组织 参考试题
  8. 【渝粤教育】电大中专测量学 (4)作业 题库
  9. 如何通俗易懂地理解基于模型的强化学习?
  10. CMake交叉编译配置