2015-12-07 16 views
8

Specifiche:EmberJS Servizio iniezione per i test unitari (Ember QUnit)

  • versione Ember: 1.13.8
  • nodo: 0.10.33
  • NPM: 2.13.4

I hanno

import Alias from "../../../services/alias"; 
 
.... 
 

 
moduleFor("controller:test", "Controller: test", { 
 
    integration: true, 
 

 
    beforeEach: function() { 
 
    this.register('service:alias', Alias, {singleton: true}); 
 
    this.inject.service('alias', { as: 'alias' }); 
 
    this.advanceReadiness(); 
 
    }, 
 
}); 
 
... 
 

 
test('Alias Alias Alias ', function(assert) { 
 
    var controller = this.subject(); 
 

 
    //sample function 
 
    controller.send("test"); 
 
    assert.equal(true, controller.alias.get("alias"), "alias should be true"); 
 
});
(Usando 'Alias', come ad esempio perché non mi permetto per mostrare il codice vero e proprio)

ho cercato di inizializzare il servizio, ma durante le prove di Ember Qunit, i controllori non hanno i servizi iniettato a loro.

Ho provato a mettere l'iniezione in: init() al posto di beforeeach, non funziona nemmeno ...

Come faccio a iniettare durante test di unità?

Inserisco punti di interruzione nel debugger per vedere se i miei controllori dispongono del servizio, non durante i test. Va bene con il servizio di brace normale, comunque.

risposta

7

Non è necessario importare il servizio. Devi includere il servizio nei bisogni come di seguito.

moduleFor("controller:test", { 
    needs: ['service:alias'] 
}); 

Per esempio:

servizi/alias.js

Em.service.extend({ 
    name: 'john' 
}); 

controllori/test.js

Em.Controller.extend({ 
    alias: Em.service.inject(), 

    test: function() { 
    alert(this.get('alias.name'); 
    } 
    }); 

test/unit/controller/test-test.js

moduleFor('controller:test', { 
    needs: ['service:store'] 
}); 

test('Alias Alias Alias', function(assert) { 

    var controller = this.subject(); 
    assert.equal(controller.get('store.name'), 'john); 

    }); 

Per eseguire questo test, Ember genera un contenitore con controller test e service alias. Quindi è possibile accedere alle proprietà del servizio con il suo nome prefissato.

+0

Questo ha risolto il mio problema con la sessione ember-simple-auth in unit test –

Problemi correlati