【问题标题】:jasmine javascript spyon object instancejasmine javascript spyon 对象实例
【发布时间】:2015-12-11 00:54:34
【问题描述】:

所以我有这个 JS 原型(类),我正在尝试为其构建 jasmine 测试,但似乎无法弄清楚如何让这些测试工作。

这是课程的重要部分:

class Calendar extends BasicView
  initialize: (options) ->
    this.$el = options.el
    {@sidebar} = options
    this.$('.select-day').click this.display_date

    this

  display_date: (e) =>
    console.log 'display_date called' # <~~ this is printing
    ... do stuff ...

以及我正在编写的测试:

describe "Calendar", ->
  calendar = null

  beforeEach ->
    loadFixtures "calendar/calendar.html"

  describe "#initialize", ->
    beforeEach ->
      calendar = new Calendar().initialize
        el: $('.event-calendar')
        # just mocking dependency class
        sidebar: jasmine.createSpyObj(CurrentlyViewing, ["$"])

    it "listens for click event on .select-day", ->
      spyOn(calendar, 'display_date')
      calendar.$('.select-day:eq(1)').trigger 'click'
      expect(calendar.display_date).toHaveBeenCalled()

当我运行测试时,我得到Expected spy display_date to have been called.,尽管实际方法被调用。我知道只是我监视的不是我初始化的Calendar 的实例,但我不知道如何或为什么。

如果有人能给我任何帮助,我将不胜感激。

【问题讨论】:

    标签: javascript jasmine bdd spyon


    【解决方案1】:

    所以我在发布问题 20 多分钟后发现了这一点……我几乎总是这样做。

    问题是我将calendar 变量设置为new Calendar().initialize(...),然后监视它(我猜)。以下是实际可行的方法:

    describe "Calendar", ->
      calendar = null
    
      beforeEach ->
        loadFixtures "calendar/calendar.html"
        calendar = new Calendar()
        spyOn calendar, 'display_date'
    
      describe "#initialize", ->
        beforeEach ->
          calendar.initialize
            el: $('.event-calendar')
            sidebar: jasmine.createSpyObj(CurrentlyViewing, ["$"])
    
        it "listens for click event on .select-day", ->
          calendar.$('.select-day:eq(1)').trigger 'click'
          expect(calendar.display_date).toHaveBeenCalled()
    

    【讨论】:

      猜你喜欢
      • 2015-08-16
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 2015-08-22
      • 1970-01-01
      相关资源
      最近更新 更多