26
苏苏

Jasmine

Embed Size (px)

DESCRIPTION

jasmine入门介绍,by苏河

Citation preview

Page 1: Jasmine

苏河

Page 2: Jasmine

• 界面老是改,测毛线

• 都是业务代码,测毛线

• 项目时间太紧,测毛线

• 测毛线,还是目测给力……

Page 3: Jasmine

• RIA

• Base on Browser

• Heavy Javascript

• Html 5

产品的变化

Page 4: Jasmine

Server Browser

Server Browser

开发量的变化

Page 5: Jasmine

前端质量

内部质量

可维护性性能设计模式开发效率

外部质量

功能

界面

前端关注点的变化

Page 6: Jasmine

困难重重

• 浪费太多时间

• 效率太低,意义不大

• 从没写过 javascript 的单元测试

How?

Page 7: Jasmine

Jasmine• Jasmine 是一个 BDD 的javascript 单元测试框架

Page 8: Jasmine

Jasmine• 语法简单

• 代码易读性

• 不依赖其他 js 框架

• 敏捷

• Nodejs 、 ruby 、 java 、 html

Page 9: Jasmine

Specs

Page 10: Jasmine

Expectations

Page 11: Jasmine

Suites

Page 12: Jasmine

Nested Describes

Page 13: Jasmine

Disabling Tests & Suites

Page 14: Jasmine

Matchers

Page 15: Jasmine

Your matchers

Page 16: Jasmine

Before and After

Page 17: Jasmine

Spies matchers

• expect(x).toHaveBeenCalled();• expect(x).toHaveBeenCalledWith(arguments);• expect(x).not.toHaveBeenCalled();• expect(x).not.toHaveBeenCalledWith(argume

nts);

Page 18: Jasmine

Spies

• spyOn(x, 'method').andCallThrough();• spyOn(x, 'method').andReturn(arguments);• spyOn(x, 'method').andThrow(exception);• spyOn(x, 'method').andCallFake(function);• spyOn(x, 'method').andReturn(value1); ... ;

x.method.andReturn(value2);

Page 19: Jasmine

spies

Page 20: Jasmine
Page 21: Jasmine

Asynchronous specs

Page 22: Jasmine

waits

Page 23: Jasmine

waitsFor

• waitsFor(function, optional message, optional timeout)

Page 24: Jasmine

爱逛街 demo

• 是否有问题?

Page 25: Jasmine

预告片

• 如何更好的架构可测试代码

• 如何集成到 klude 测试平台

• ……

Page 26: Jasmine

QA