SlideShare a Scribd company logo
1 of 17
Download to read offline
JSテストツール
∼Sails.js × Mochaでtest∼
2014/12/26
立命館大学経営学部 3年 井口智勝
(1)
In General
TDD/BDD
TDD(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: テストダブルツール
ベストコンビネーション!
Mocha
describe: テストの階層
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’)
Sinon
spy: 呼ばれた関数の情報を取得
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

More Related Content

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

第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」Hiromu Shioya
 
テストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdfテストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdf耕二 阿部
 
TDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめTDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめKyota Yasuda
 
テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証Akira Ikeda
 
20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編nackypon
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDDTakuto Wada
 
TDDの原理 ~ スペック・ファースト
TDDの原理 ~ スペック・ファーストTDDの原理 ~ スペック・ファースト
TDDの原理 ~ スペック・ファーストYasuhiko Yamamoto
 
Tdd is really dead ?
Tdd is really dead ?Tdd is really dead ?
Tdd is really dead ?Akira Suenami
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料Yasui Tsutomu
 
Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous TestingAtsuhiro Kubo
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x AndroidToshiyuki Hirata
 
要求開発×アジャイル開発×ドメイン駆動開発
要求開発×アジャイル開発×ドメイン駆動開発要求開発×アジャイル開発×ドメイン駆動開発
要求開発×アジャイル開発×ドメイン駆動開発Kent Ishizawa
 
テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2Masashi Shibata
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDDYuuki Takezawa
 
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)kyon mm
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情Toshiyuki Hirata
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーShuji Watanabe
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化Yukei Wachi
 

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

第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」
 
テストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdfテストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdf
 
TDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめTDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめ
 
テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証
 
20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
 
TDDの原理 ~ スペック・ファースト
TDDの原理 ~ スペック・ファーストTDDの原理 ~ スペック・ファースト
TDDの原理 ~ スペック・ファースト
 
Tdd
TddTdd
Tdd
 
Tdd is really dead ?
Tdd is really dead ?Tdd is really dead ?
Tdd is really dead ?
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous Testing
 
Tdd
TddTdd
Tdd
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
要求開発×アジャイル開発×ドメイン駆動開発
要求開発×アジャイル開発×ドメイン駆動開発要求開発×アジャイル開発×ドメイン駆動開発
要求開発×アジャイル開発×ドメイン駆動開発
 
テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 

More from Tomokatsu Iguchi

Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①Tomokatsu Iguchi
 
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふうTomokatsu Iguchi
 

More from Tomokatsu Iguchi (8)

リモート開発導入
リモート開発導入リモート開発導入
リモート開発導入
 
11.9 bkclt
11.9 bkclt11.9 bkclt
11.9 bkclt
 
Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①
 
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
 
Sails workshop4
Sails workshop4Sails workshop4
Sails workshop4
 
Sails workshop3
Sails workshop3Sails workshop3
Sails workshop3
 
Sails workshop2
Sails workshop2Sails workshop2
Sails workshop2
 
Sails workshop1
Sails workshop1Sails workshop1
Sails workshop1
 

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