Page 299 - AngularJS权威教程
P. 299

19.22  建立我们的第一个测试    279


              19.21.2  测试的策略                                                                         19

                  我们已经发现,介于编写测试和编写代码之间的最佳平衡更多在于:知道要测试什么,怎样
              测试。无论什么时候给代码写测试,都要把测试定位到所实现的行为上来。也就是说,无须编写                                             20
              一个测试,来确保在<input>字段中输入时,<h1>标签的内容会变化。举例来说,我们需要为实
              时搜索测试自定义过滤。                                                                            21
                  我们还发现,在做原型之前,提前做测试没什么好处。在原型阶段,我们很少写测试(如果
              有的话),因为我们还在评审应用的功能。然而,当应用开始增多时,写测试就是个好主意了,                                             22
              它可以确保应用的行为在生产中是按照我们的预期来表现的。
                  最后,我们要建立测试,每一块测试的东西要尽可能少。理想情况下,每个测试块应当包含                                           23
              不超过一个预期。
                  理论说得够多了,我们用一些策略来测试应用。                                                              24

                  我们想要测试页面更新成正在测试的仓库的标题。Angular应用使用一个自定义服务来创建
              到github.com的$http请求。这个请求返回后,我们在前台页面填充剩余部分。                                             25
                  其次,我们想要测试页面导航和内容的变化。这个测试涉及对视图上导航按钮的点击来提示
              $location变化。                                                                           26

                  我们开始吧!
                                                                                                     27
              19.22  建立我们的第一个测试
                                                                                                     28
                  我们的Protractor配置文件很简单,在Protractor自带示例配置文件的基础上几乎没有修改:

                   // 示例配置文件
                   exports.config = {                                                                29
                     seleniumAddress: 'http://0.0.0.0:4444/wd/hub',
                     capabilities: { 'browserName': 'chrome' },
                     specs: ['test/e2e/**/*.spec.js'],                                               30
                     jasmineNodeOpts: {
                        showColors: true,
                        defaultTimeoutInterval: 30000                                                31
                     }
                  };
                  我们 会在 test/e2e 目 录中编写 自己的 Protractor 测试, 正如在配置 文件中用命 名约 定                          32
              [name].spec.js指定的那样。我们来在test/e2e目录中创建第一个测试,名为main.spec.js。

                  鉴于Protractor测试就是简单的Jasmine测试,我们从一个简单的Jasmine桩开始:                                   33
                   //在test/e2e/main.spec.js中
                   describe('E2E: main page', function() {                                           34
                       // 把测试代码放在这里
                  });
                  考虑到我们在用Jasmine写测试,所以可以使用beforeEach块来建立它们。我们也需要跟踪                                   35
              Protractor实例,所以创建一个叫做ptor的变量来保持它。对于这些测试中的每一个,我们都会使
              用browser对象导航到首页。
                                                                                                     36
   294   295   296   297   298   299   300   301   302   303   304