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

17
JSテストツール Sails.js × Mochatest2014/12/26 立命館大学経営学部 3年 井口智勝 (1)

Upload: tomokatsu-iguchi

Post on 29-Jul-2015

278 views

Category:

Engineering


2 download

TRANSCRIPT

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

JSテストツール

~Sails.js × Mochaでtest~

2014/12/26 立命館大学経営学部 3年 井口智勝

(1)

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

In General

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

TDD/BDDTDD(Test Driven Development): テスト駆動開発

テストファースト

Red(失敗) => Green(通過) => Refactoring

BDD(Behavior Driven Development):振る舞い駆動開発

「振る舞い」でテスト。より自然言語ぽくなった。

テスト技法 ではなく 設計技法 である!by Kent Beck (TDDの生みの親とされてる人)

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

CI

CI(Continuos Integration): 継続的インテグレーション

複数人で一つのソースコードに統合していく際に起こる問題を低減させるための手法、思想。

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

テストダブルとは?Ajaxなどの外部リソースや扱いにくいオブジェクトを、代役となるオブジェクトに置き換えてテストを行うこと

スパイ:関数がどのように呼び出されたかを記録する

スタブ:関数の戻り値をあらかじめ設定し、その結果でテストを行う

モック:実行前に関数の実行回数など期待する結果を指定しておく

フェイク:問い合わせるDBやサーバ処理などを単純な実装に置き換える

出典:JavaScriptでスパイ、スタブ、モックなどのテストダブルを行う

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

Javascriptテストツール

Jasmine

Mocha

QUnit

JsTestDriver ……などなど

参考:今、本当に人気がある「JavaScriptライブラリ&ツール」を調べてみた

← 多機能(All in one)

参考:Jasmine VS Mocha VS QUnit参考:Jasmine VS Mocha

← 柔軟(not All in one) SailsはMocha推し

参考:Javascriptテストまとめ

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

Google Trend (2014/12/23)

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

For Sails Development

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

サンプルテスト

テストをしてるだけの自作sample

テストツール:mocha chai sinon

https://github.com/igtm/MochaSampleTestForSails.js

これを見ながら進めていきます。

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

Mocha Chai Sinon

Mocha: テストツール

Chai: アサーションツール(評価ツール)

Sinon: テストダブルツール

ベストコンビネーション!

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

Mochadescribe: テストの階層

it: テスト本体 (xitにすると実行されなくなる)

before: itの前に1回走る

beforeEach: itごとの前に必ず1回走る

after: 後処理

afterEach: itごとの後処理

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

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’)

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

Sinonspy: 呼ばれた関数の情報を取得

var spy = sinon.spy();

spyをコールバックとして設定…

expect(spy.called).to.be.true;

その他 stubs, mocks, Fakeなど様々

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

testに必要な参照

require(‘chai’).expect

require(‘sinon’)

modelの参照 ←以下2パターンある

① Wolfpackを使う(associationはまだ未実装)

② sails liftさせてからtestする(遅い…)

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

For Watnow Dev-Environment

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

導入ステップ

テスト ラスト

テスト ファースト

事前設計 要件定義

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

参考になるサイト

http://www.tysoncadenhead.com/blog/unit-testing-sails-js-applications-with-mocha#.VJmTlAgw

http://lxyuma.hatenablog.com/entry/2013/12/15/211637