Coffeescript在jQuery document.ready中调用函数

时间:2011-10-18 23:49:37

标签: jquery testing coffeescript jasmine

茉莉花测试:

describe 'Toolbar', ->
  beforeEach ->
    jasmine.getFixtures().fixturesPath = "../spec/javascript/fixtures"
    loadFixtures("canvas_fixture.html")

  describe 'Rectangle Button Click', ->
    it 'adds the selected class to rectangle button', ->
      toolbar = new Toolbar()
      expect(toolbar).toBeDefined
      console.log $('#rectangle')
      toolbar.rectangle
      expect($('#rectangle').hasClass("selected")).toBeTruthy()
      console.log $('#rectangle')

类别:

class window.Toolbar
  jQuery ->
    rectangle: $('#rectangle').click ->
      $('#toolbar button').removeClass("selected")
      $('#rectangle').addClass("selected")

这个测试对我来说失败了,因为所选的类没有添加到灯具中,我想我没有正确调用该函数。我该如何调用

  

$( '#矩形')。然后按

我的测试功能?感谢。

1 个答案:

答案 0 :(得分:1)

我不知道整个背景,但我看到了一些事情:

    你的测试中的
  • toolbar.rectangle没有调用函数,你需要说toolbar.rectangle()来实际调用它
  • 你写的类没有在Toolbar类中定义一个方法,你应该写这样的东西:

    class Toolbar
      rectangle: ->
        $('#rectangle').click ->
          $('#toolbar button').removeClass("selected")
          $('#rectangle').addClass("selected")
    
  • 当您编写此$('#rectangle').click -> ...时,您正在定义一个事件处理程序,当您单击#rectangle时将调用该事件处理程序。如果你想让它立即采取行动(即当你致电toolbar.rectangle()时,你需要这样的话:

    class Toolbar
      rectangle: ->
        $('#toolbar button').removeClass("selected")
        $('#rectangle').addClass("selected")
    

当然,你需要确保在页面正确加载后发生这一切,不熟悉Jasmine来说明是否会发生这种情况。

希望这有帮助。