Question

Jasmine Test:

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

Classe:

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

Ce test échoue pour moi que la classe sélectionnée n'est pas ajouté à l'appareil, et je pense que je ne suis pas d'appeler la fonction correctement. Comment dois-je appeler le

$ ( '# rectangle). Cliquez sur

fonction

dans mon test? Merci.

Était-ce utile?

La solution

Je ne sais pas tout le contexte, mais certaines choses que je vois:

  • toolbar.rectangle dans votre test ne demande pas une fonction, vous devez dire toolbar.rectangle() appeler réellement
  • Votre classe écrit ne définit pas une méthode sur la classe barre d'outils, vous devriez écrire quelque chose comme ceci:

    class Toolbar
      rectangle: ->
        $('#rectangle').click ->
          $('#toolbar button').removeClass("selected")
          $('#rectangle').addClass("selected")
    
  • Lorsque vous écrivez ce $('#rectangle').click -> ..., vous définissez un gestionnaire d'événement qui sera appelé lorsque vous cliquez dans #rectangle. Si vous voulez avoir-il agir immédiatement (à savoir lorsque vous appelez toolbar.rectangle(), vous avez besoin quelque chose comme ceci:

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

Bien sûr, vous devez vous assurer que tout cela se passe après la page se charge correctement, pas familier avec Jasmine de dire si cela se produira.

Hope this helps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top