2014-10-15 6 views
7

Non riesco a ottenere i ganci e le azioni del modello attivati ​​da un test di unità.Come eseguire il test delle rotte nell'app di ember-cli usando qunit?

Qualsiasi esempio/blog che fa questo ambiente di ember-cli sarebbe di grande aiuto!

Ho trovato questo link What kind of unit test solution for the routes in Ember.js?

ma route.model() sta gettando errori come: la transizione non è definito.

import { test, moduleFor } from 'ember-qunit'; 

moduleFor('route:sample', 'SampleRoute', { 
    // Specify the other units that are required for this test. 
}); 

test("beforeModel hook works", function(){ 
    var route = this.subject(); 
    Ember.run(function(){ 
     route.set("model", "Sample data"); 
    }) 
    console.log("Model set. Was beforeModel hook called?"); 
}); 

La Strada del campione

import Ember from 'ember'; 

export default Ember.Route.extend({ 

    beforeModel: function (transition) { 
     console.log("Inside before-model hook"); 
    }, 

    afterModel: function() { 
     console.log("In after-model hook"); 
    } 
}); 
+0

Potresti aggiungere il tuo codice di test qui? –

+0

@Patsy: i ganci del modello non vengono attivati ​​nei test. – Stuarty

risposta

1

Purtroppo, questo non è abbastanza come funzionano le cose. beforeModel non viene semplicemente chiamato prima che sia impostato model e afterModel in seguito. Sono solo ganci chiamati in quella sequenza (beforeModel -> model -> afterModel) come parte del ciclo di vita di un percorso.

Sfortunatamente, non ho trovato un buon modo per testare le unità. Se hai una specifica logica beforeModel che devi testare, allora puoi semplicemente chiamare lo beforeModel direttamente? Ho trovato che la logica Route è meglio testata attraverso test in stile accettazione, dal momento che si ha la Route invocata nello stesso modo in cui avverrà quando l'applicazione è effettivamente in esecuzione.