0

我希望使用我选择的测试框架 jasmine 对 ember.js 中的路由事件处理程序进行存根/监视。通常这涉及用 spy 覆盖感兴趣的函数,这需要访问定义方法的对象:

spy = spyOn(someObject, "methodOnThatObject")

但是在 Ember 中,我的路由的事件处理程序定义如下:

App.ActivityRoute = Ember.Route.extend({
  events: {
    show: function(context) {
    }
  }
});

我想存根函数 show,但我不知道如何获取最终定义它的对象?或者它是否曾经定义在一个对象上?也许它是用#call 或#apply 调用的?如果是这样,一个如何存根呢?

我试过挖掘源头,但没有设法弄清楚这是如何处理的。任何指向我应该在源代码中查看的位置也会有所帮助。

干杯,凯文

4

2 回答 2

1

您可以使用send('eventName', [optional record])

如果您从同一路由下的控制器调用,请执行以下操作:

this.get('target').send('show', this.get('content'))
于 2013-04-30T12:54:37.493 回答
1

傻我。我可以做到以下几点:

route = App.__container__.lookup('route:myRoute')
spy = spyOn(route.get('events'), 'show')
controller.send('show')
expect(spy).toHaveBeenCalled()

那行得通。

于 2013-04-30T12:53:59.883 回答