图书介绍

测试驱动的JavaScript开发【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

测试驱动的JavaScript开发
  • (美)约翰森著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111362746
  • 出版时间:2012
  • 标注页数:379页
  • 文件大小:21MB
  • 文件页数:397页
  • 主题词:JAVA语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

测试驱动的JavaScript开发PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 测试驱动开发1

第1章 自动化测试1

1.1单元测试1

1.1.1单元测试框架2

1.1.2 JavaScript期函数strftime2

1.2断言5

1.3测试函数、用例和套件7

1.4集成测试10

1.5单元测试的好处12

1.5.1回归测试12

1.5.2重构12

1.5.3跨浏览器的测试13

1.5.4其他的一些好处13

1.6单元测试中的陷阱13

1.7小结13

第2章 测试驱动开发的过程15

2.1测试驱动开发的目的与目标15

2.1.1开发顺序的颠倒15

2.1.2测试驱动开发中的设计15

2.2过程16

2.2.1步骤1:编写一个测试17

2.2.2步骤2:观看测试失败17

2.2.3步骤3:使测试通过18

2.2.4步骤4:重构以消除冗余20

2.2.5打肥皂、冲洗、重复20

2.3让测试驱动开发简便易行21

2.4测试驱动开发的好处21

2.4.1有效的代码21

2.4.2遵循单一职责原则22

2.4.3强制有意识的开发22

2.4.4提高生产效率22

2.5小结22

第3章 行业工具23

3.1 xUnit测试框架23

3.1.1行为驱动开发23

3.1.2持续集成23

3.1.3异步测试24

3.1.4 xUnit测试框架的特点24

3.1.5断言25

3.1.6依赖关系25

3.2浏览器内的测试框架26

3.2.1 YUI Test26

3.2.2其他浏览器内的测试框架28

3.3无头测试框架29

3.3.1交叉检查29

3.3.2 Rhino与env.js29

3.3.3无头测试框架的缺点30

3.4一个掌管一切的测试运行器30

3.4.1 JsTestDriver是怎样工作的30

3.4.2 JsTestDriver的缺点31

3.4.3安装31

3.4.4在IDE里使用JsTestDriver35

3.4.5提高命令行效率36

3.4.6断言37

3.5小结38

第4章 从测试中学习39

4.1用单元测试探索JavaScript39

4.1.1观察法编程的缺陷41

4.1.2学习测试的最佳点41

4.2性能测试42

4.2.1基准和相对性能43

4.2.2性能评测和定位瓶颈50

4.3小结51

第二部分 开发人员的JavaScript53

第5章 函数53

5.1定义函数53

5.1.1函数声明53

5.1.2函数表达式54

5.1.3 Function构造器55

5.2调用函数56

5.2.1 arguments对象56

5.2.2形参和arguments57

5.3作用域和执行上下文58

5.3.1执行上下文59

5.3.2变量对象59

5.3.3活动对象60

5.3.4全局对象60

5.3.5作用域链61

5.3.6再访函数表达式62

5.4this关键字64

5.4.1隐式地设置this65

5.4.2显式地设置this65

5.4.3使用原初类型当做this66

5.5小结67

第6章 函数和闭包的应用68

6.1绑定函数68

6.1.1this被丢弃:一个Lightbox的例子68

6.1.2通过一个匿名函数解决this问题69

6.1.3 Function.prototype.bind70

6.1.4绑定参数71

6.1.5局部套用73

6.2被立即调用的匿名函数74

6.2.1 Ad Hoc作用域74

6.2.2命名空间76

6.3状态函数79

6.3.1生成唯一的标识符79

6.3.2迭代器81

6.4记忆84

6.5小结86

第7章 对象和原型继承87

7.1对象和属性87

7.1.1属性访问88

7.1.2原型链89

7.1.3通过原型链实现对象扩展90

7.1.4可枚举属性91

7.1.5属性的特性94

7.2使用构造器创建对象98

7.2.1 prototype和[[Prototype]]98

7.2.2使用new创建对象98

7.2.3构造器原型99

7.2.4构造器的问题102

7.3伪经典结构的继承103

7.3.1继承函数104

7.3.2访问[[Prototype]]105

7.3.3实现super105

7.4封装和信息隐藏110

7.4.1私有方法110

7.4.2私有成员和特权方法112

7.4.3函数式继承113

7.5对象组合和混搭体115

7.5.1 Object.create方法115

7.5.2 tddjs.extend方法117

7.5.3混搭体120

7.6小结121

第8章 ECMAScript 5122

8.1 JavaScript不远的未来122

8.2对象模型的更新123

8.2.1属性的特性123

8.2.2原型继承125

8.2.3 Getter和Setter127

8.2.4使用属性的特性128

8.2.5作为属性标识符的保留关键字131

8.3严格模式131

8.3.1启用严格模式131

8.3.2严格模式带来的改变132

8.4各种新内容及改进134

8.4.1原生的JSON134

8.4.2 Function.prototype.bind135

8.4.3关于数组135

8.5小结135

第9章 不唐突的JavaScript137

9.1不唐突的JavaScript的目标137

9.2不唐突的JavaScript的规则138

9.2.1唐突的标签式面板138

9.2.2简洁的标签式面板标记140

9.2.3 TDD和渐进增强141

9.3不要做任何假设141

9.3.1不要假设只有你一个人141

9.3.2不要假设标记是正确的142

9.3.3不要假设所有用户的需求都一样142

9.3.4不要假设支持142

9.4规则何时适用143

9.5不唐突的标签式面板的例子143

9.5.1建立测试143

9.5.2tabController对象145

9.5.3 activateTab方法147

9.5.4使用标签控制器149

9.6小结152

第10章 特性检测154

10.1浏览器嗅探154

10.1.1用户代理嗅探154

10.1.2对象检测155

10.1.3浏览器嗅探的状态156

10.2正确使用对象检测156

10.2.1检查对象是否存在156

10.2.2类型检查157

10.2.3原生和宿主对象157

10.2.4使用测试样例160

10.2.5何时测试161

10.3特性检测DOM事件161

10.4特性检测CSS属性163

10.5跨浏览器事件处理例程164

10.6使用特性检测167

10.6.1向前进167

10.6.2无法检测到的特性167

10.7小结168

第三部分 JavaScript测试驱动开发实践169

第11章 观察者模式169

11.1 JavaScript中的观察者169

11.1.1观察物库170

11.1.2设置环境170

11.2添加观察者171

11.2.1第一个测试171

11.2.2重构173

11.3检查观察者174

11.3.1测试175

11.3.2重构177

11.4通知观察者177

11.4.1确保观察者被调用177

11.4.2传递参数178

11.5错误处理179

11.5.1添加假的观察者179

11.5.2有问题的观察者180

11.5.3记录调用顺序181

11.6观察任意对象182

11.6.1让构造器成为过去式183

11.6.2用对象来替换构造器185

11.6.3重命名方法186

11.7观察任意事件187

11.7.1支持observe中的事件187

11.7.2支持notify中的事件188

11.8小结191

第12章 抽象化浏览器区别:Ajax192

12.1以测试驱动来开发一个请求API192

12.1.1发现浏览器的不一致192

12.1.2开发策略192

12.1.3目标193

12.2实现请求接口193

12.2.1项目布局193

12.2.2选择接口风格194

12.3创建一个XMLHttpRequest对象194

12.3.1第一个测试194

12.3.2 XMLHttpRequest背景知识195

12.3.3实现tddjs.ajax.create196

12.3.4更强的特性检测197

12.4编写Get请求198

12.4.1需要一个URL198

12.4.2为XMLHttpRequest对象创建桩199

12.4.3处理状态的变化205

12.4.4处理状态变化206

12.5使用Ajax API209

12.5.1集成测试210

12.5.2测试结果211

12.5.3微妙的麻烦212

12.5.4本地请求213

12.5.5测试状态214

12.6发出POST请求217

12.6.1为POST做准备217

12.6.2发送数据220

12.6.3设置请求头信息225

12.7重审请求API225

12.8小结229

第13章 使用Ajax和Comet将数据流式化230

13.1数据轮询230

13.1.1项目结构230

13.1.2轮询器:tddjs.ajax.poller231

13.1.3定时器测试238

13.1.4可配置的头和回调242

13.1.5单行接口245

13.2 Comet247

13.2.1永不消失的框架247

13.2.2流式化XMLHttpRequest248

13.2.3 HTML5248

13.3长轮询的XMLHttpRequest248

13.3.1实现长轮询支持248

13.3.2避免缓存问题251

13.3.3特性检测252

13.4 Comet客户端252

13.4.1消息格式253

13.4.2介绍ajax.cometClient254

13.4.3分发数据255

13.4.4添加观察者258

13.4.5服务器连接259

13.4.6跟踪请求和接收到的数据264

13.4.7发布数据267

13.4.8特性检测267

13.5小结267

第14章 基于Node.js的服务器端JavaS cript269

14.1 Node js运行时环境269

14.1.1环境设置269

14.1.2起点271

14.2控制器272

14.2.1 CommonJS规则模块272

14.2.2定义模块:首测272

14.2.3建立控制器273

14.2.4基于POST方式添加消息274

14.2.5对请求做出响应280

14.2.6将应用程序用于实践281

14.3域模型和存储器283

14.3.1创建聊天室283

14.3.2 Node中的输入输出283

14.3.3添加聊天信息283

14.3.4获取聊天信息287

14.4 Promises290

14.4.1用promise重构addMessage方法291

14.4.2使用promise对象294

14.5事件产生器295

14.5.1让chatRoom对象成为一个事件产生器295

14.5.2等待聊天信息297

14.6回到控制器300

14.6.1完成Post方法300

14.6.2通过GET方法输出数据流302

14.6.3响应头和响应体307

14.7小结308

第15章 TDD与DOM操作:聊天室客户端程序309

15.1客户端的蓝图309

15.1.1目录结构309

15.1.2选择方法310

15.2用户表单311

15.2.1视图的设置311

15.2.2处理提交事件316

15.2.3特征测试324

15.3用Node js后端使用客户端325

15.4聊天信息列表327

15.4.1设置模型327

15.4.2设置视图330

15.4.3添加聊天信息331

15.4.4来自同一用户的重复内容334

15.4.5特征测试335

15.4.6动手实验335

15.5聊天信息表单336

15.5.1建立测试用例337

15.5.2设置视图337

15.5.3发布聊天信息339

15.5.4特征测试342

15.6聊天室客户端的最终版本343

15.6.1收尾工作344

15.6.2部署时的注意事项346

15.7小结347

第四部分 测试模式349

第16章 模拟对象和创建桩349

16.1测试替身概述349

16.1.1特技替身349

16.1.2假对象350

16.1.3哑对象350

16.2测试验证351

16.2.1状态验证351

16.2.2行为验证351

16.2.3验证策略的作用352

16.3桩352

16.3.1使用桩来避免不方便的接口352

16.3.2使用桩让系统通过特定代码路径353

16.3.3使用桩来制造麻烦353

16.4测试间谍354

16.4.1测试间接输入354

16.4.2检测调用细节355

16.5使用桩库355

16.5.1创建桩函数355

16.5.2给方法创建桩356

16.5.3内建行为验证358

16.5.4创建桩和Node.js359

16.6模拟对象360

16.6.1恢复被模拟的函数360

16.6.2匿名的模拟对象361

16.6.3多重期望361

16.6.4对this值的期望362

16.7模拟对象还是桩363

16.8小结364

第17章 编写良好的单元测试365

17.1提高可读性365

17.1.1清楚地命名测试以表明意图365

17.1.2用设置、应用和验证块对测试进行结构化367

17.1.3使用更高级的抽象保持测试的简单性367

17.1.4减少重复,而不是减少明确性369

17.2将测试作为行为规范370

17.2.1一次只测试一种行为370

17.2.2每个行为只测试一次371

17.2.3在测试中隔离行为371

17.3与测试中的缺陷做斗争373

17.3.1在测试通过之前运行它们373

17.3.2首先编写测试374

17.3.3搅乱和破坏代码374

17.3.4使用JsLint374

17.4小结375

参考文献376

热门推荐