【问题标题】:Why am I unable to spyOn this "global" function?为什么我无法窥探这个“全局”功能?
【发布时间】:2012-12-13 21:52:56
【问题描述】:

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

感谢任何见解!谢谢。

【问题讨论】:

    标签: coffeescript jasmine


    【解决方案1】:

    这将失败:

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

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

    MyClass.makesCallToMyFunction()
    

    【讨论】:

    • 就是这样!累了我的监督。谢谢!
    猜你喜欢
    • 2020-02-24
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多