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
   248   249   250   251   252   253   254   255   256   257   258