@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Backbone.View の submit form イベントとイベントハンドラのテストを書くときの注意点

スタブ/モックに sinon.js を使っているとする。

  • "events" のテストをしたいときは View.prototype.handlerName を stub して stub のコールバック関数で (ev) -> ev.preventDefault() を呼ぶこと。でないとテストが走ったとき実際に form submit されてしまい、ブラウザ上でテストページを開くと延々フォーム送信し続けてしまう
  • イベントハンドラのテストをしたいときは↑の stub が有効なスコープ内だと当然 stub されててイベントハンドラは実際には呼ばれないので注意すること(よく忘れて悩むので)
  • あと view.$el.find('form').trigger('submit') なり .submit() なりでフォーム送信イベントを発火させる前に view.render() を呼んでおかないとフォームの HTML が DOM に存在せずフォーム送信されないので忘れずに