0

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

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 创建的对象进入商店?他们必须满足某些要求吗?它是否取决于它们与其他对象的关系?

4

1 回答 1

2

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

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

于 2016-03-01T13:29:14.387 回答