Ember.js - 测试路由器didTransition事件

时间:2014-04-11 08:33:26

标签: ember.js ember-testing

我正在尝试测试重新打开Ember路由器的自定义mixin,并为didTransition事件添加一个监听器。这是代码:

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

然后,测试(在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)

显然,这不起作用,因为一旦路由器完成转换,必须有一种方法来进行断言。你会怎么做?

请注意,这不是集成测试,而是mixin的单元测试。

1 个答案:

答案 0 :(得分:0)

我最终得到了以下测试并且正在工作:

Ember.run ->
  router.trigger('didTransition')
  ok(myMixinStub.calledOnce)