我希望使用我选择的测试框架jasmine在ember.js中对路径的事件处理程序进行存根/侦察。通常这涉及用间谍覆盖感兴趣的功能,这需要访问定义方法的对象:
spy = spyOn(someObject, "methodOnThatObject")
但在Ember中,我的路线的事件处理程序定义如下:
App.ActivityRoute = Ember.Route.extend({
events: {
show: function(context) {
}
}
});
我想将函数show存根,但我不知道如何获取最终定义它的对象?或者它是否曾在某个对象上定义过?也许用#call或#apply调用它?如果是这样,那么如何存根呢?
我试过挖掘源头,但没有设法弄清楚如何处理。任何指向我应该在源中查看的位置的指针也会有所帮助。
干杯, 凯文
答案 0 :(得分:1)
route = App.__container__.lookup('route:myRoute')
spy = spyOn(route.get('events'), 'show')
controller.send('show')
expect(spy).toHaveBeenCalled()
这很有效。
答案 1 :(得分:1)
您可以使用send('eventName', [optional record])
:
如果您在同一路线下从控制器拨打电话:
this.get('target').send('show', this.get('content'))