Question

J'essaie de tester un mixin personnalisé qui rouvre le routeur Ember et ajoute un écouteur au didTransition événement.Voici le code :

// my_mixin.js
...
initialize: function(container, application) {
      Ember.Router.reopen(App.MyMixin);
      var router = container.lookup('router:main');
      router.on('didTransition', function() {
         this.myFunctionFromMixin();
      });
    },
...

Ensuite, le test (en Coffeescript) :

test 'hooks myMixinFunction into router didTransition event', ->
  expect(1)
  myMixinStub = sinon.stub(router, 'myFunctionFromMixin')            
  router.transitionTo('some/known/route')
  # What goes here?
  ok(myMixinStub.calledOnce)

Évidemment, cela ne fonctionne pas, puisqu'il doit y avoir un moyen d'effectuer l'assertion une fois que le routeur a terminé la transition.Comment ferais-tu ceci?

Notez qu'il ne s'agit pas d'un test d'intégration, mais d'un test unitaire pour le mixin.

Était-ce utile?

La solution

J'ai fini avec le test suivant et ça marche :

Ember.run ->
  router.trigger('didTransition')
  ok(myMixinStub.calledOnce)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top