Page 253 - AngularJS权威教程
P. 253
19.9 Jasmine 233
], 19
function() {
describe('UnitTest: App', function() {
// 跟平常一样
it('is defined', function() { 20
expect(_.size([1,2,3])).toEqual(3);
});
}); 21
});
19.9 Jasmine 22
我们来过一遍Jasmine测试框架。尽管Karma支持多种测试框架,但默认的选项是Jasmine。
23
Jasmine是一个用于测试JavaScript代码的行为驱动开发框架。既然我们将要用到Jasmine语法,
先大致看一下怎样写基于Jasmine的测试套件吧。
24
19.9.1 细则套件
25
Jasmine套件的核心部分是describe函数。这个函数是Jasmine套件定义的一个全局函数,所
以可以在测试中直接调用。
26
describe()函数带有两个参数,一个字符串,一个函数。字符串是待建立的细则(spec)套
件名称或者描述,函数封装了测试套件。 27
describe('Unit test: MainController', function() {
});
28
可以嵌套这些describe()函数,这样我们可以创建一个测试树来执行那些在测试中设置的
不同条件。
29
describe('Unit test: MainController', function() {
describe('index method', function() {
// 细则放这里 30
});
});
使用describe()函数把相关的细则分组是个不错的主意。在每个describe()块运行时,这 31
些字符串会沿着细则的名称链接起来。因此,上面这个例子的标题就会变成“Unit test:
MainController index method.” 32
然后,这些describe()块的标题就会被追加到细则的标题上。设计这个步骤的目的是让我
们以完整句子来阅读细则的,所以把测试命名成可读的英文就很重要了。 33
19.9.2 定义一个细则 34
我们通过调用it()函数来定义一个细则。这个函数也是在Jasmine测试套件中定义的全局函
数,所以可以从测试中直接调用。 35
it()函数带有两个参数:一个字符串,是细则的标题或者描述;一个函数,包含了一个或多
个用于测试代码功能的预期。 36