我尝试使用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
谢谢!
答案 0 :(得分:1)
您没有犯错误 - Mirage模型不会继承您的Ember Data模型的计算属性。我知道这很令人困惑,你肯定不是第一个问为什么的人。
幻影模型被称为“模型”,因为在大多数系统(前端和后端)中,术语模型意味着“包裹一些数据的对象”。即使Mirage的设计与Ember合作,Mirage也根本不了解您的Ember应用程序。
Mirage拥有自己的“数据库”(JavaScript对象)和ORM。使用适合您开发和测试Ember应用程序的数据,模型可以方便您“种植服务器”。因此,就像您的Ruby模型无法访问您的Ember Data计算属性一样(例如,如果您的服务器是用Rails编写的),您的Mirage模型也存在于隔离环境中。
最新版本,Mirage能够查看您的Ember Data模型并将其关系复制到自己的架构中。但这只是一种便利,仅用于Mirage的引导过程。
如果这样可以解决问题,或者您还有其他问题,请告诉我们。