Ember数据模型中的计算属性不能从ember-cli-mirage模型中获得

时间:2018-03-15 16:38:58

标签: ember-cli-mirage

我尝试使用ember-cli-mirage进行测试。我有很多具有计算属性的Ember数据模型。当我创建Mirage模型实例时,似乎计算属性不可用。我想知道如果有办法让计算属性有效,我是否犯了错误?

// app/models/profile.js
import DS from 'ember-data';

export default DS.Model({
  firstName: attr('string'),
  lastName: attr('string'),

  fullName: computed('firstName', 'lastName', function() {
    // return ...
  })
});
// Create profile instance...
let profile = server.create('profile', { firstName: 'Tom', lastName: 'Stran' });
profile.firstName // Tom
profile.lastName  // Stran
profile.fullName // undefined
profile.get('fullName') // profile.get is not a function

谢谢!

1 个答案:

答案 0 :(得分:1)

您没有犯错误 - Mirage模型不会继承您的Ember Data模型的计算属性。我知道这很令人困惑,你肯定不是第一个问为什么的人。

幻影模型被称为“模型”,因为在大多数系统(前端和后端)中,术语模型意味着“包裹一些数据的对象”。即使Mirage的设计与Ember合作,Mirage也根本不了解您的Ember应用程序。

Mirage拥有自己的“数据库”(JavaScript对象)和ORM。使用适合您开发和测试Ember应用程序的数据,模型可以方便您“种植服务器”。因此,就像您的Ruby模型无法访问您的Ember Data计算属性一样(例如,如果您的服务器是用Rails编写的),您的Mirage模型也存在于隔离环境中。

最新版本,Mirage能够查看您的Ember Data模型并将其关系复制到自己的架构中。但这只是一种便利,仅用于Mirage的引导过程。

如果这样可以解决问题,或者您还有其他问题,请告诉我们。