【问题标题】:How to mock up Date object?如何模拟 Date 对象?
【发布时间】:2013-07-10 23:45:20
【问题描述】:

我正在尝试为此方法编写茉莉花测试

currentTime: ->
  Math.round(new Date().getTime()/1000)

在测试中尝试这个:

@date = new Date()
@date = Date(@date.getTime() + 70)
spyOn(window, "Date").andCallFake ->
  @date
expect(@user.currentTime()).toEqual xxx

我尝试了@date = new Date(@date.getTime() + 70),但没有帮助。

但我得到了错误:

Uncaught TypeError: Object [object Object] has no method 'getTime'

知道如何解决吗?谢谢

【问题讨论】:

  • Date(@date.getTime() + 70) 返回一个字符串。试试new Date。 (虽然如果这是你的全部问题,那应该是[object String]...)另外,你为什么要编写这个似乎需要更多测试的测试,而不是要测试的内容?
  • @minitech,我已经尝试过同样的错误

标签: coffeescript jasmine


【解决方案1】:

您必须模拟 Date 构造函数,以便他为 getTime 返回一个模拟,该模拟总是返回相同的 int:

spyOn(window, "Date").andReturn {getTime: -> 1000}

【讨论】:

    【解决方案2】:

    解决方案取自here

    @_Date = Date
    testContext = @
    time = new Date().getTime() + 400
    spyOn(window, "Date").andCallFake ->
      new testContext._Date(time)
    

    【讨论】:

      猜你喜欢
      • 2020-04-28
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2010-10-01
      • 2011-10-07
      • 2021-07-15
      相关资源
      最近更新 更多