Jsテストツール 〜 sails.js×mochaでtest 〜 (1)

Preview:

Citation preview

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