首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ember js中,如何在单元测试中创建或模拟hasMany关系

在Ember js中,如何在单元测试中创建或模拟hasMany关系
EN

Stack Overflow用户
提问于 2016-07-22 11:59:32
回答 1查看 1.5K关注 0票数 2

我正在对一个具有DS.hasMany()关系属性的模型进行单元测试。每当我执行下面的单元测试时,我都会在我的测试运行程序中得到这个错误:Error: Assertion Failed: All elements of a hasMany relationship must be instances of DS.Model, you passed [<Ember.Object:ember367>,<Ember.Object:ember368>]

有人能解释一下吗,好吗?

型号:

代码语言:javascript
复制
export default DS.Model.extend({
  accounts: DS.hasMany('account'),
  servicesAccounts: DS.hasMany('services-account'),
  address: MF.fragment('address'),
  appEligibilities: MF.fragmentArray('app-eligibility'),

  appsForPremise: Ember.computed('accounts', function () {
    return DS.PromiseArray.create({
      promise: this.get('store').find('app', {
        account: this.get('accounts').mapBy('id')
      })
    });
  })
});

模型统一测试:

代码语言:javascript
复制
import { moduleForModel, test } from 'ember-qunit';
import Ember from 'ember';

moduleForModel('premise', 'Unit | Model | premise', {
  needs: [
    'model:account',
    'model:services-account',
    'model:address',
    'model:app-eligibility'
  ]
});

test('Apps for premise', function (assert) {
  let model = this.subject({
      accounts: [Ember.Object.create({
        id: 'account-1'
      }),
      Ember.Object.create({
        id: 'account-2'
      })],
      appsForPremise: sinon.spy()
    });

  Ember.run(() => {
  });

  assert.equal(model.get('appsForPremise'), '[{id: account-1}, {id: account-2}]');

});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-22 20:01:23

您不能将常规的ember对象传递给hasMany关系,它们必须是存储模型对象。您可以使用存储来创建它们,即

代码语言:javascript
复制
 const store = this.store();
 Ember.run(() => {
    const model = this.subject({
        accounts: [
          store.createRecord('services-account', {
            id: 'account-1'
        }),
          store.createRecord('services-account',{
            id: 'account-2'
        })],
        appsForPremise: sinon.spy()
    });
 });

对store方法的调用必须进入run循环,否则Ember会报错。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38517927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档