testable javascript
DESCRIPTION
テスト可能な JavaScript についての発表資料です。 Ruby Sappor Night vol.14 ( http://ruby-sapporo.org/news/2012/02/01/rsn-14.html ) でお話してきました。 共演者の資料はこちら: http://snoozer05.org/?date=20120223#p01TRANSCRIPT
Testable JavaScript
佐藤 竜之介(Ryunosuke SATO)Sapporo.js
RubySapporoNight vol.14
http://www.flickr.com/photos/8773698@N03/2929230558
提供
Sapporo.js
Community for people who like JavaScript.
It’s my feature
よろしくお願いします
Testable JavaScript
佐藤 竜之介(Ryunosuke SATO)Sapporo.js
RubySapporoNight vol.14
http://www.flickr.com/photos/8773698@N03/2929230558
対象者
webブラウザで動くJavaScript を書いている方JavaScript のテストに興味がある方
テストを書いて快適に開発をしたい方
Ruby でサーバ側を作ってるけど
JavaScript を書く機会が増えてきた方
たとえば...
??Test
Rubyには洗練されたテスト文化
JavaScript ではまだ十分ではないと思う
In browser
difficult
??why
http://www.flickr.com/photos/zuka0607/4311979628
design
(^q^)
そうなる前に!
整理整頓
‘‘http://redbitbluebit.com/code-kata-software-memory-muscles/
KATA
http://blog.nodejitsu.com/scaling-isomorphic-javascript-code
翻訳: https://gist.github.com/1362110
http://documentcloud.github.com/backbone/
point
ドメインロジックと画面の分離
Testable
http://tasklist-demo.herokuapp.com/
source: https://github.com/tricknotes/task-list
http://tasklist-demo.herokuapp.com/
source: https://github.com/tricknotes/task-list
(demo)
一カ所の変更が、複数の表示に影響を与えている
表示箇所を一つ増やそうとすると、すべてのアクションにイベントを追加する
必要がある
http://www.flickr.com/photos/pappuradonkarume/4711288623
‘‘http://redbitbluebit.com/code-kata-software-memory-muscles/
KATA
ドメインロジックと画面の分離
TaskView
TotalView
Task
TaskTotalView
TaskView
subscribe
subscribe
publish
publish
action
Model
View
View
Testable!!
Unit Test
TaskTotalView
TaskView
subscribe
subscribe
publish
publish
Model
View
View
action
http://visionmedia.github.com/mocha/
Unit Test
using: mocha( http://visionmedia.github.com/mocha/ ) expect.js( https://github.com/LearnBoost/expect.js )
Unit Test
Acceptance Test
TaskTotalView
TaskView
subscribe
subscribe
publish
publish
Model
View
View
action
Acceptance Test
using: mocha( http://visionmedia.github.com/mocha/ ) expect.js( https://github.com/LearnBoost/expect.js ) zombie ( http://zombie.labnotes.org/ )
Acceptance Test
Ruby JavaScript
TestUnit QUnit
RSpec jasminemocha
capybara-webkit zombie
今回使ったフレームワーク
他にもこの辺オススメ
Ruby JavaScript
cucumber cucumber
RSpec(matcher)should.jsexpect.js
etc...
CI でもブラウザでも同じように動くテストhtml5 の機能のテスト (canvas, localStorage...)
課題
大事なこと
安心して開発を行うためのテスト大事
テストしやすい設計
分離された構造
変更に強い設計
手を加える度に、進歩して行ける開発を!
http://www.flickr.com/photos/ku_photodigital/6309174528