2012-08-09 15 views
9

Qualcuno ha qualche buon consiglio per testare che il connectOutlet della rotta di terra ha avuto successo?testing ember.js connectOutlet

Per esempio, ho i seguenti itinerari:

vault: Ember.Route.extend 
    route: '/vault' 
    connectOutlets: (router, event) -> 
    router.get('applicationController').connectOutlet 'exercises' 
    index: Ember.Route.extend 
    route: '/' 
    connectOutlets: (router, event) -> 
     exercises = WZ.store.find(WZ.Exercise) 
     router.get('exercisesController').connectOutlet 'main', 'exercisesHome', exercises 

Come posso fare per controllare che questo stava avendo il comportamento desiderato?

posso testare il currentState.path in questo modo:

it 'should transition to vault', -> 
    Ember.run => 
    @router.transitionTo 'vault' 
    expect(@router.getPath('currentState.path')).toEqual 'root.vault' 

Ma io non credo che questo è un buon test.

risposta

1

A mio parere, questo codice non merita test.

In primo luogo, definiamo formalmente un comportamento desiderato per questo codice:

Quando le transizioni router allo stato 'caveau/index', e tutto è OK, avviene quanto segue:

  1. Ember crea nuovi istanza di ExercisesHomeView
  2. Ember imposta la proprietà contenuto di exercisesHomeController ad un elenco di esercizi
  3. Ember collega la vista creata alla presa principale nel modello ExercisesView
  4. 0.123.

Vedete, tutto il lavoro significativo è fatto da Ember. Pertanto, in senso stretto, non c'è nulla da testare, dal momento che non testiamo il codice di terze parti.

A mio parere, questo codice ha solo una cosa che forse merita test: se stiamo fornendo i dati giusti al controller. Anche allora, testerei questo codice solo dopo che mi trovavo di fronte al suo comportamento scorretto.