JSテストツール ~Sails.js × Mochaでtest~ 2014/12/26 立命館大学経営学部 3年 井口智勝 (1)
JSテストツール
~Sails.js × Mochaでtest~
2014/12/26 立命館大学経営学部 3年 井口智勝
(1)
In General
TDD/BDDTDD(Test Driven Development): テスト駆動開発
テストファースト
Red(失敗) => Green(通過) => Refactoring
BDD(Behavior Driven Development):振る舞い駆動開発
「振る舞い」でテスト。より自然言語ぽくなった。
テスト技法 ではなく 設計技法 である!by Kent Beck (TDDの生みの親とされてる人)
CI
CI(Continuos Integration): 継続的インテグレーション
複数人で一つのソースコードに統合していく際に起こる問題を低減させるための手法、思想。
テストダブルとは?Ajaxなどの外部リソースや扱いにくいオブジェクトを、代役となるオブジェクトに置き換えてテストを行うこと
スパイ:関数がどのように呼び出されたかを記録する
スタブ:関数の戻り値をあらかじめ設定し、その結果でテストを行う
モック:実行前に関数の実行回数など期待する結果を指定しておく
フェイク:問い合わせるDBやサーバ処理などを単純な実装に置き換える
出典:JavaScriptでスパイ、スタブ、モックなどのテストダブルを行う
Javascriptテストツール
Jasmine
Mocha
QUnit
JsTestDriver ……などなど
参考:今、本当に人気がある「JavaScriptライブラリ&ツール」を調べてみた
← 多機能(All in one)
参考:Jasmine VS Mocha VS QUnit参考:Jasmine VS Mocha
← 柔軟(not All in one) SailsはMocha推し
参考:Javascriptテストまとめ
Google Trend (2014/12/23)
For Sails Development
サンプルテスト
テストをしてるだけの自作sample
テストツール:mocha chai sinon
https://github.com/igtm/MochaSampleTestForSails.js
これを見ながら進めていきます。
Mocha Chai Sinon
Mocha: テストツール
Chai: アサーションツール(評価ツール)
Sinon: テストダブルツール
ベストコンビネーション!
Mochadescribe: テストの階層
it: テスト本体 (xitにすると実行されなくなる)
before: itの前に1回走る
beforeEach: itごとの前に必ず1回走る
after: 後処理
afterEach: itごとの後処理
Chai
expect, should, assertの3つの書き方から選択できる。
Should: User.should.have.property(‘name’,’Tomo’)
Expect: expect(User.name).to.be.a(‘Tomo’)
Assert: assert.equal(User.name, ‘Tomo’)
Sinonspy: 呼ばれた関数の情報を取得
var spy = sinon.spy();
spyをコールバックとして設定…
expect(spy.called).to.be.true;
その他 stubs, mocks, Fakeなど様々
testに必要な参照
require(‘chai’).expect
require(‘sinon’)
modelの参照 ←以下2パターンある
① Wolfpackを使う(associationはまだ未実装)
② sails liftさせてからtestする(遅い…)
For Watnow Dev-Environment
導入ステップ
テスト ラスト
テスト ファースト
事前設計 要件定義
参考になるサイト
http://www.tysoncadenhead.com/blog/unit-testing-sails-js-applications-with-mocha#.VJmTlAgw
http://lxyuma.hatenablog.com/entry/2013/12/15/211637