Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java scriptでTDD


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Java scriptでTDD

  1. 1. JavaScriptでTDD すまべん関東 #162011/12/03 @oota_ken
  2. 2. こんな本が出てた● 買ってないです● これから買います● 内容不明です● それはさてお き、JavaScriptのテ スティングフレーム ワークは使いにくい ものが多いです
  3. 3. google-js-test●● GoogleによるJavaScriptテスティングフレー ムワーク● V8が内蔵されていて、ブラウザーなしでコマ ンドラインから使える● Google Test for C++に似ているというか元に した
  4. 4. テストコード some_functions_test.js//////////////////////////// getSomeWords 文字列配列Hello Worldを取得する//////////////////////////function GetSomeWordsTest() {}registerTestSuite(GetSomeWordsTest);GetSomeWordsTest.prototype.ReturnsCorrectWords = function() { var words = myproject.getSomeWords(); // Assert directly what the words should be. expectThat(words, elementsAre([Hello, World])); // Note that you could have also done so as follows, but it doesnt give // error messages that are as nice. expectEq(2, words.length); expectEq(Hello, words[0]); expectEq(World, words[1]);};
  5. 5. 実装コードnamespace.js (名前空間用) some_functions.jsvar myproject = {};// Return some interesting words.myproject.getSomeWords = function() { return [Hello, world];};
  6. 6. 実行!h241n073:google-js-test-sample oota_ken$ gjstest--js_files=namespace.js,some_functions.js,some_functions_test.js[----------][ RUN ] GetSomeWordsTest.ReturnsCorrectWordssome_functions_test.js:12Expected: is an array or Arguments object of length 2 with elements matching: [ Hello, World ]Actual: [ Hello, world ], whose element 1 doesnt matchsome_functions_test.js:18Expected: WorldActual: world[ FAILED ] GetSomeWordsTest.ReturnsCorrectWords (4 ms)[----------][ FAILED ] こけたOTL “World”を”world”とスペルミス TDDだからテストが先にあるお!
  7. 7. 直して// Return some interesting words.myproject.getSomeWords = function() { return [Hello, World];};
  8. 8. 再実行!h241n073:google-js-test-sample oota_ken$ gjstest--js_files=namespace.js,some_functions.js,some_functions_test.js[----------][ RUN ] GetSomeWordsTest.ReturnsCorrectWords[ OK ] GetSomeWordsTest.ReturnsCorrectWords (3 ms)[----------][ PASSED ] 成功 ふう
  9. 9. 結論● ブラウザなしで実行できる● 実行が非常に早い● →TDDのリズムが実現できる● →CIにも組み込める● 他のフレームワークと違ってJUnitに近いので 使いやすい● スマートフォンHTML5+JavaScriptでも使えそ う