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, попадать в магазин? Есть ли какие-то требования, которым они должны соответствовать? Зависит ли это от их отношения к другим объектам?


person TwoLeggedMammal    schedule 01.03.2016    source источник
comment
Настроили ли вы свой маршрут Mirage для возврата моделей при получении запроса? ember-cli-mirage.com/docs/v0 .1.x/определение-маршрутов   -  person Casey    schedule 01.03.2016


Ответы (1)


server.create будет создавать объекты в базе данных Mirage. Сервер Mirage — это фиктивный сервер, поэтому он абсолютно ничего не знает о вашем приложении; все, что он умеет делать, это отвечать на HTTP-запросы. Это означает, что для того, чтобы получить фиктивные данные в ваше приложение Ember, ваше приложение должно делать HTTP-запросы, обычно через store.findAll.

Итак, в приемочном тесте, когда вы visit(/some/path), хук model для этого пути сделает запрос GET, Mirage ответит соответствующими данными, и тогда вы получите данные в своем магазине.

person Sam Selikoff    schedule 01.03.2016
comment
Спасибо, это была недостающая часть головоломки. Большая часть других данных загружается, потому что я вызываю загрузку, и в нее встроены эти объекты. Это помогает знать, что нет прямой связи. - person TwoLeggedMammal; 01.03.2016