【问题标题】:Jasmine Spy Undefined茉莉花间谍未定义
【发布时间】:2012-08-15 00:03:21
【问题描述】:

当我运行我的茉莉花规格时,我收到以下错误:

Error: Expected a spy, but got undefined.

我的咖啡脚本代码:

  describe "setupForm", ->
    beforeEach ->
      spyOn(Subscription.prototype, 'runSimulation')

    it "calls subscription.runSimulation when form is submitted with number", ->
      Subscription.prototype.runSimulation()
      expect(Subscription.prototype.runSimulation()).toHaveBeenCalled()

我已将错误代码简化为上述代码以进行调试,但我无法弄清楚为什么当我明确将其称为我的测试时,它会说从未调用过间谍。我正在其他地方测试该方法,所以我认为错误必须与我使用 Jasmine Spy 的方式有关。谢谢。

【问题讨论】:

    标签: javascript coffeescript jasmine jasmine-jquery


    【解决方案1】:

    () 去掉Subscription.prototype.runSimulation() 的末尾:

      expect(Subscription.prototype.runSimulation).toHaveBeenCalled()
    

    【讨论】:

    • 谢谢。你能解释一下为什么会这样吗?
    • 如果你传递Subscription.prototype.runSimulation(),你实际上传递的是函数的返回值,而不是函数本身。返回值(我假设)未定义,这就是您收到该错误的原因。
    • 顺便说一句,您还运行了两次模拟(一次在 it 块的第一行,一次在您将其返回值传递给 expect 的第二行)。
    • @shioyama 评论应该是答案的一部分,为什么总是比如何更有用:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多