我正在尝试测试重新打开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的单元测试。
答案 0 :(得分:0)
我最终得到了以下测试并且正在工作:
Ember.run ->
router.trigger('didTransition')
ok(myMixinStub.calledOnce)