0

ジャスミンテスト:

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

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

4

1 に答える 1

1

全体の文脈はわかりませんが、いくつか見られることは次のとおりです。

  • toolbar.rectangletoolbar.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 がそれが行われるかどうかはわかりません。

お役に立てれば。

于 2011-10-19T00:05:11.773 に答える