Ember CLI + Mirage:何时将对象保存到商店

时间:2016-03-01 00:12:09

标签: ember.js ember-data ember-cli-mirage

我正在编写一些测试,我创建了一堆相互依赖的对象。我的代码如下:

let translations =
        [server.create('translation', { key: 'positive.callRating', value: 'How would you rate your call with %agentFirstName%?' }),
         server.create('translation', { key: 'negative.sorry', value: 'What could %agentFirstName% have done better?' }),
         server.create('translation', { key: 'social.ratingGiven', value: 'I just rated %agentFirstName% %stars%!' })];

let profile = server.create('profile', { first_name: 'Andy' });
let employee = server.create('employee', { profile: profile });
let company = server.create('company', { handle: 'lendingtree', translations: translations });
let bootstrap = server.create('bootstrap', { stars: 5, company: company, employee: employee });

我有一项应该了解其中一些对象的服务。我打电话的时候:

this.get('store').peekAll('translation')
来自服务的

我没有得到任何结果,但是所有其他对象,以相同的方式检索,存在于商店中;简介,员工,公司和引导。

我确信我必须以某种方式调整我的模型或序列化程序或工厂以使其工作,但了解基础知识会更有用。

通过Mirage创建的对象进入商店的原因是什么?他们必须满足某些要求吗?它取决于它们与其他物体的关系吗?

1 个答案:

答案 0 :(得分:2)

server.create将在Mirage的数据库中创建对象。 Mirage的服务器是一个模拟服务器,所以它对你的应用程序一无所知;所有它知道如何做的是响应HTTP请求。这意味着为了将模拟数据导入您的Ember应用程序,您的应用程序需要发出HTTP请求,通常是通过store.findAll

因此,在验收测试中,当您visit(/some/path)时,该路径的model挂钩会发出GET请求,Mirage会回复相应的数据,然后您就会有商店中的数据。