2015-04-03 8 views
10

Nella mia app ho questo initializer che inietta il negozio in tutti i servizi:Come iniettare lo store in un servizio Ember.Service in unit?

export function initialize(container, application) { 
    application.inject('service', 'store', 'store:main'); 
} 

export default { 
    name: 'inject-store-in-services', 
    initialize: initialize 
}; 

Il mio problema è che quando ho eseguito test di unità, i servizi non hanno la proprietà store. Quindi la mia domanda: c'è un modo per ottenere ciò che fa il mio inizializzatore, ma all'interno di un contesto di test unitario?

+0

Mock the store, un test di unità non dovrebbe andare al di fuori dello scopo del servizio. – Kingpin2k

+0

@ Kingpin2k Il mio servizio è in realtà solo un wrapper su operazioni predefinite su modelli che non voglio ripetere ovunque nella mia app. Devo testare che restituisca un 'DS.Model' con le proprietà corrette impostate. Prendere in giro il negozio avrebbe semplicemente messo alla prova i miei mazzi ... –

+0

Non funziona quando si eseguono i test. Funziona quando l'app viene eseguita normalmente (non in modalità di test)? – jmurphyau

risposta

13

Nelle versioni recenti di Ember è possibile iniettare il negozio come un servizio, ad esempio:

Ember.Service.extend({ 
    store: Ember.inject.service() 
}); 

Ottiene il nome del servizio dal nome della proprietà, quindi se lo si chiama qualcosa di diverso è necessario specificare 'negozio '.. ad es .:

Ember.Service.extend({ 
    banana: Ember.inject.service('store') 
}); 
+0

Conoscevo l'API per i servizi di iniezione ma non pensavo che funzionasse con lo store. Grazie! –

+0

Penso che il negozio come servizio fosse una aggiunta recente. – knownasilya

+6

Per me, dice "Tentativo di iniettare un'iniezione sconosciuta:' servizio: negozio' ". –