Ember CLI + Mirage:对象何时保存到存储中

Ember CLI + Mirage: When are objects saved to the store

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

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')

我从该服务中没有得到任何结果,但我的所有其他对象(以相同方式检索)都存在于商店中;个人资料、员工、公司和 bootstrap.

我确定我必须以某种方式调整我的模型或序列化程序或工厂才能完成这项工作,但了解基础知识会更有用。

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

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

因此,在验收测试中,当您 visit(/some/path) 时,该路径的 model 挂钩将发出 GET 请求,Mirage 将使用适当的数据进行响应,然后您将拥有您商店中的数据。