为什么我无法窥探这个“全球”功能?

时间:2012-12-28 16:44:38

标签: coffeescript jasmine

第一次尝试使用Jasmine间谍,所以我希望我只是错过了一些明显的东西。我想要做的是跟踪对我定义为的函数的调用:

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)setup / spec。

任何见解都表示赞赏!感谢。

1 个答案:

答案 0 :(得分:2)

这将失败:

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

因为MyClass.makesCallToMyFunction不是方法调用,所以它只是对makesCallToMyFunction函数的引用。如果你想在没有任何参数的情况下调用CoffeeScript函数/方法,那么你需要包含括号,否则CoffeeScript将不知道你想要调用函数:

MyClass.makesCallToMyFunction()