Page 276 - AngularJS权威教程
P. 276
256 第 19 章 测试
端到端测试页面内容
从另一方面讲,端到端测试对于为已加载的HTML建立预期来说是很理想的。利用端到端测
试,应用里每个负责执行成功浏览器请求的部分都会被触发。
要建立端到端的内容测试,我们跟往常一样建立测试:
describe('E2E: Content', function() {
});
在这个路由测试中,我们将建立两个场景:
在首页上,有一个指向登录路由的链接;
可以点击这个链接,然后它会带我们到登录页面。
在第一个测试中,我们只验证页面上存在一个登录按钮。我们来建立一个断言:有一个登录
按钮可以单击。
在index.html里,假定有如下内容:
<div id="authorize">
<a id="login" class="radius" href="#/login">Try it! Sign in</a>
</div>
在第一个测试中,我们只确认存在匹配按钮上文字的元素:
it('should have a sign up button', function() {
browser().navigateTo('/#/');
expect(
element("a#login").html()
).toEqual("Try it! Sign in");
});
现在,要保证点击这个链接能把用户带到登录页。我们建立另外一个测试来断言如果我们点
了这个链接,新的地址就是login路由:
it('should show login when clicking sign in', function() {
browser().navigateTo('/#/');
element("a#login", "Sign in button").click();
expect(browser().location().path())
.toBe('/login');
});
最后,如果我们要针对一个用户作测试的话,可以建立测试,通过选出输入元素,设置值的
方式来填充登录表单,如图19-6所示。
it('should be able to fill in the user info',
function() {
browser().navigateTo('/#/');
element("a#login", "Sign in button").click();
input("user.email").enter("ari@fullstack.io");
input("user.password").enter('123123');
element('form input[type="submit"]').click();
expect(browser().location().path())
.toBe('/dashboard');
});