返回介绍

测试 - 测试模型

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

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

单元测试方案和计算属性与之前单元测试基础中说明的相同,因为DS.Model集成自Ember.Object

[Ember Data[模型可以使用moduleForModel助手来测试。

假定有一个Player模型,模型定义了levellevelName属性。通过调用levelUp可以增加level,并当玩家升级到5级时,为levelName设置一个新的值。

1
2
3
4
5
6
7
8
9
10
11
App.Player = DS.Model.extend({
  level:     DS.attr('number', { defaultValue: 0 }),
  levelName: DS.attr('string', { defaultValue: 'Noob' }),

  levelUp: function() {
    var newLevel = this.incrementProperty('level');
    if (newLevel === 5) {
      this.set('levelName', 'Professional');      
    }
  }
});

下面创建一个测试,测试将在玩家等级为4时,调用levelUp方法来判断levelName是否正确改变。这里将使用moduleForModel来获取玩家的实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
moduleForModel('player', 'Player Model');

test('levelUp', function() {
  // this.subject aliases the createRecord method on the model
  var player = this.subject({ level: 4 });

  // wrap asynchronous call in run loop
  Ember.run(function() {
    player.levelUp();
  });

  equal(player.get('level'), 5);
  equal(player.get('levelName'), 'Professional');
});

在线示例

Ember Data模型单元测试

测试关联关系

对于关联关系,可能只希望测试是否正确声明了关联关系。

例如一个User可以拥有一份Profile

1
2
3
4
5
App.Profile = DS.Model.extend({});

App.User = DS.Model.extend({
  profile: DS.belongsTo(App.Profile)
});

这里可以对关联关系是否正确关联进行正确性测试。

1
2
3
4
5
6
7
8
9
10
moduleForModel('user', 'User Model', {
  needs: ['model:profile']
});

test('profile relationship', function() {
  var relationships = Ember.get(App.User, 'relationships');
  deepEqual(relationships.get(App.Profile), [
    { name: 'profile', kind: 'belongsTo' }
  ]);
});

在线示例

模型单元测试(关联关系:One-to-One)

Ember Data还包含了针对关联关系功能性测试,因此可能不需要对这些来进行重复的测试。可以查看Ember Data测试,来了解更多关于深层次的关联关系的测试。

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

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

发布评论

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