1

第一次尝试使用 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) 设置/规范。

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

4

1 回答 1

2

这将失败:

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

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

MyClass.makesCallToMyFunction()
于 2012-12-28T19:35:00.290 回答