0

選択したテスト フレームワークである jasmine を使用して、ember.js でルートのイベント ハンドラーをスタブ/スパイしたいと考えています。通常、これには対象の関数をスパイで上書きすることが含まれます。これには、メソッドが定義されているオブジェクトへのアクセスが必要です。

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 に答える