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 ответит соответствующими данными, а затем у вас будут данные в вашем магазине.