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');
                 });
   271   272   273   274   275   276   277   278   279   280   281