質問

ジャスミンテスト:

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')。クリックします

私のテストで機能しますか?ありがとう。

役に立ちましたか?

解決

私は全体の文脈を知りませんが、私が見るいくつかのこと:

  • toolbar.rectangle あなたのテストでは関数を呼び出していないので、あなたは言う必要があります toolbar.rectangle() 実際にそれを呼ぶ
  • 書かれたクラスは、ツールバークラスでメソッドを定義するものではありません。次のようなものを書く必要があります。

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

もちろん、ページが正しく読み込まれた後にこれがすべて発生することを確認する必要があります。ジャスミンに精通していないため、それが起こるかどうかを述べる必要があります。

お役に立てれば。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top