返回介绍

测试 - 测试用户交互

发布于 2020-02-21 15:48:04 字数 1990 浏览 1111 评论 0 收藏 0

英文原文:http://emberjs.com/guides/testing/testing-user-interaction/

几乎所有的测试都有访问路由的一种固有模式,就是与页面进行交互(通过助手),然后检测期待的改变是否在DOM中发生。

例如:

1
2
3
4
5
6
test('root lists first page of posts', function(){
  visit('/posts');
  andThen(function() {
    equal(find('ul.posts li').length, 3, 'The first page should have 3 posts');
  });
});

这些助手使用一个全局的承诺来执行操作,如果这个承诺对象存在,会自动的链上这个对象。这也就不需要单向测试中助手可能触发的异步行为了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module('Integration: Transitions', {
  setup: function() {
    App.reset();
  }
});

test('add new post', function() {
  visit('/posts/new');
  fillIn('input.title', 'My new post');
  click('button.submit');

  andThen(function() {
    equal(find('ul.posts li:last').text(), 'My new post');
  });
});

在线示例

测试用户交互

测试过渡

假定有一个应用需要身份认证。当一位访问者最为未登录用户访问某一URL时,希望他被过渡到一个登录的页面。

1
2
3
4
5
6
7
8
App.ProfileRoute = Ember.Route.extend({
  beforeModel: function() {
    var user = this.modelFor('application');
    if (Em.isEmpty(user)) {
      this.transitionTo('login');
    }
  }
});

当受限的URL被访问时,可以通过路由助手确保用户被重定向到登录页面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
module('Integration: Transitions', {
  setup: function() {
    App.reset();
  }
});

test('redirect to login if not authenticated', function() {
  visit('/');
  click('.profile');

  andThen(function() {
    equal(currentRouteName(), 'login');
    equal(currentPath(), 'login');
    equal(currentURL(), '/login');
  });
});

在线示例

测试过渡

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文