Coffeescript вызывая функцию внутри jQuery docment.ready - PullRequest
0 голосов
/ 19 октября 2011

Жасминовый тест:

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")

Для меня этот тест не пройден, поскольку выбранный класс не добавляется в прибор, и я думаю, что янеправильно вызывать функцию.Как вызвать функцию

$ ('# rectangle'). Click

в моем тесте?Спасибо.

1 Ответ

1 голос
/ 19 октября 2011

Я не знаю всего контекста, но кое-что вижу:

  • 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")
    

Конечно, вам нужно убедиться, что все это происходит после правильной загрузки страницы, не знакомы с Жасмин, чтобы сказать, произойдет ли это.

Надеюсь, это поможет.

...