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 ответ

Решение

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

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

Другие вопросы по тегам