2012-12-28 43 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