2012-12-28 42 views
1

第一次嘗試使用茉莉花間諜,所以我希望我只是錯過了明顯的東西。我想要做的是跟蹤調用我定義的函數:爲什麼我無法監聽這個「全局」功能?

window.myFunction = -> 

我有一個調用此函數的類方法。該方法工作正常,我可以測試它的大部分方面,但下面的失敗:

beforeEach -> 
    spyOn(window, 'myFunction').andCallThrough() 

it 'should do that thing', -> 
    MyClass.makesCallToMyFunction 
    expect(window.myFunction).toHaveBeenCalled() 

我做錯了什麼?我看過很多關於SO的例子,其中許多使用spyOn(window,'myFunction')... expect(window.myFunction)設置/規範。

任何見識都被讚賞!謝謝。

回答

2

這將失敗:

it 'should do that thing', -> 
    MyClass.makesCallToMyFunction 
    expect(window.myFunction).toHaveBeenCalled() 

因爲MyClass.makesCallToMyFunction不是一個方法調用,這是根本的makesCallToMyFunction函數的引用。如果你想調用沒有任何參數的CoffeeScript函數/方法,那麼你需要包含圓括號或CoffeeScript不會知道你想調用函數:

MyClass.makesCallToMyFunction() 
+0

就是這樣!對我來說很累。謝謝! – Chris