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