1

Je signe simple itinéraire dans mon application Ember:Unknown `service: injecteur session` dans l'unité de route Ember essai

import Ember from 'ember'; 
import UnauthenticatedRouteMixin from 'ember-simple-auth/mixins/unauthenticated-route-mixin'; 

export default Ember.Route.extend(UnauthenticatedRouteMixin, { 
}); 

Et pas beaucoup plus compliqué test unitaire pour que:

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

moduleFor('route:sign-in', 'Unit | Route | sign in', { 
    needs: ['service:session'] 
}); 

test('it exists', function(assert) { 
    let route = this.subject(); 
    assert.ok(route); 
}); 

mais lors de l'exécution ember test -f sign il échoue avec l'erreur me disant qu'il ne peut pas injecter service:session:

Built project successfully. Stored in "/Users/hauleth/Workspace/hauleth/crossover/frontend/tmp/core_object-tests_dist-P16KQenq.tmp". 
not ok 1 PhantomJS 2.1 - Unit | Controller | sign in: it exists 
    --- 
     actual: > 
      null 
     stack: > 
      [email protected]://localhost:7357/assets/vendor.js:12932:91 
      http://localhost:7357/assets/vendor.js:12107:48 
      [email protected]://localhost:7357/assets/vendor.js:17219:9 
      [email protected]://localhost:7357/assets/vendor.js:26382:43 
      [email protected]://localhost:7357/assets/vendor.js:12101:34 
      [email protected]://localhost:7357/assets/vendor.js:11955:28 
      [email protected]://localhost:7357/assets/vendor.js:11994:42 
      [email protected]://localhost:7357/assets/vendor.js:12067:37 
      [email protected]://localhost:7357/assets/vendor.js:12038:37 
      [email protected]://localhost:7357/assets/vendor.js:11888:24 
      [email protected]://localhost:7357/assets/test-support.js:7816:39 
      http://localhost:7357/assets/test-support.js:7904:75 
      http://localhost:7357/assets/tests.js:345:34 
      [email protected]://localhost:7357/assets/test-support.js:6634:34 
      [email protected]://localhost:7357/assets/test-support.js:2779:32 
      [email protected]://localhost:7357/assets/test-support.js:2764:11 
      http://localhost:7357/assets/test-support.js:2906:14 
      [email protected]://localhost:7357/assets/test-support.js:2565:24 
      [email protected]://localhost:7357/assets/test-support.js:2547:9 
      http://localhost:7357/assets/test-support.js:2607:9 
     message: > 
      Died on test #1 [email protected]://localhost:7357/assets/test-support.js:6663:16 
      [email protected]://localhost:7357/assets/test-support.js:6676:44 
      http://localhost:7357/assets/tests.js:344:24 
      [email protected]://localhost:7357/assets/vendor.js:131:37 
      [email protected]://localhost:7357/assets/vendor.js:30:25 
      [email protected]://localhost:7357/assets/test-loader.js:67:16 
      [email protected]://localhost:7357/assets/test-loader.js:58:25 
      [email protected]://localhost:7357/assets/test-loader.js:89:35 
      http://localhost:7357/assets/test-support.js:6485:20: Attempting to inject an unknown injection: `service:session` 
     Log: | 
    ... 
ok 2 PhantomJS 2.1 - Unit | Route | sign in: it exists 

1..2 
# tests 2 
# pass 1 
# skip 0 
# fail 1 

J'ai essayé de trouver des solutions mais tout ce que je trouve concerne les tests d'intégration ou me dit d'ajouter needs: ['service:session'], mais c'est déjà là.

Répondre

1

Ca m'arrive aussi. Je pense que c'est parce que le service session ne peut pas être trouvé dans votre application (c'est dans l'addon). Ne me croyez pas sur parole.

De toute façon, ce que vous pouvez faire est de boucher l'objet de session lui-même dans le sujet de l'itinéraire plutôt que dans les besoins.

par exemple.

test('it exists', function(assert) { 
    let route = this.subject({session: Ember.Object.create()}); 
    assert.ok(route); 
}); 

Le problème il y a si vous avez besoin dans la session comme session.get('isAuthenticated') il échouera simplement parce que vous écrasa un session vide. Donc, vous devriez cognez à la place comme ceci:

let route = this.subject({session: Ember.Object.create({isAuthenticated: true}); 

Astuce: Création d'une aide de test pour créer cette souche de la session serait utile.