3

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

// 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 的单元测试。

4

1 回答 1

0

我结束了以下测试并且它正在工作:

Ember.run ->
  router.trigger('didTransition')
  ok(myMixinStub.calledOnce)
于 2014-05-16T20:26:22.817 回答