我正在尝试测试重新打开 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 的单元测试。