power-assert in JavaScript

5,134 views

Published on

power-assert in JavaScript
Aug 21, 2013
at 10th Tokyo Node Gakuen #tng10

Published in: Technology

power-assert in JavaScript

  1. 1. 新しい テストライブラリの ご提案 (公開版) 和田 卓人 (a.k.a id:t-wada or @t_wada) Aug 21, 2013 @東京 Node 学園 #10
  2. 2. 当日の講演動画のリンク http://bit.ly/1glmC2G
  3. 3. 和田 卓人 id: t-wada @t_wada github: twada
  4. 4. とてもニッ チなものを 作りました
  5. 5. 注: 黒い画面 しか出てき ません
  6. 6. 通称「きのこ本」
  7. 7. •良いインタフェースとは次の2つの条件 を満たすインタフェース •正しく使用する方が操作ミスをする より簡単 •誤った使い方をすることが困難 きのこ53: 正しい使い方を簡単 に、誤った使い方を困難に
  8. 8. 正しく使用する方が操作ミスを するより簡単 誤った使い方をすることが困難
  9. 9. 正しく使用する方が操作ミスを するより簡単 誤った使い方をすることが困難
  10. 10. デモ1
  11. 11. 当日のデモ1のリンク http://bit.ly/1dNVQW0
  12. 12. 字面だけでなく失敗時の 情報も重要 ふるまいがインターフェ イスに制約を与える
  13. 13. assert.equal((7 - 3), 4); assert.equal((7 - 3), 4, "4でしょ"); assert#equal(actual, expected) assert#equal(actual, expected, message) Node の assert モジュール
  14. 14. JUnit assertEquals(expected, actual) assertEquals(message, expected, actual) TestNG assertEquals(actual, expected) assertEquals(actual, expected, message) PHPUnit assertEquals(expected, actual) assertEquals(expected, actual, message) 他の xUnit はどうか
  15. 15. どうしてこ うなった
  16. 16. http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Xunit
  17. 17. 犯人はファウラーだった(自白済)
  18. 18. 正しく使用する方が操作ミスを するより簡単 誤った使い方をすることが困難
  19. 19. 間違えやすい引数は良く ない -> RSpec っぽく書け れば良い?
  20. 20. デモ2
  21. 21. 当日のデモ2のリンク http://bit.ly/1lA73fr
  22. 22. そもそも assert の情報量が多け ればいいのでは?
  23. 23. デモ3
  24. 24. 当日のデモ3のリンク http://bit.ly/1pHYbSc
  25. 25. 何が起こっ たんです?
  26. 26. Caught: Assertion failed: assert 5 == list.max() - 1 | | | | | | 5 4 | [1, 3, 4, 5, 2] false at test.run(test.groovy:3) http://d.hatena.ne.jp/genzouw/20100121/1264080325 元ネタは Groovy
  27. 27. 新しい テストライブラリの ご提案 和田 卓人 (a.k.a id:t-wada or @t_wada) Aug 21, 2013 @東京 Node 学園 #10
  28. 28. power-assert js 版を作ったよ 和田 卓人 (a.k.a id:t-wada or @t_wada) Aug 21, 2013 @東京 Node 学園 #10
  29. 29. https://github.com/twada/power-assert
  30. 30. https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
  31. 31. https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
  32. 32. https://speakerdeck.com/michaelficarra/spidermonkey-parser-api-a-standard-for-structured-js-representations
  33. 33. https://speakerdeck.com/michaelficarra/spidermonkey-parser-api-a-standard-for-structured-js-representations
  34. 34. https://speakerdeck.com/michaelficarra/spidermonkey-parser-api-a-standard-for-structured-js-representations
  35. 35. https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
  36. 36. https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
  37. 37. power-assert の しくみ
  38. 38. instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify ) jsCode
  39. 39. esprima instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify ) jsCode jsCode
  40. 40. esprima instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify ) jsCode jsAST jsCode
  41. 41. espoweresprima instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify ) jsCode jsAST jsAST jsCode
  42. 42. espoweresprima instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify ) jsCode jsAST jsAST jsAST jsCode
  43. 43. espoweresprima instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify ) jsCode jsAST escodegen jsAST jsAST jsAST jsCode
  44. 44. espoweresprima instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify ) jsCode jsAST escodegen jsAST jsAST jsAST jsCode jsCode
  45. 45. espoweresprima instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify ) jsCode jsAST escodegen jsAST jsAST jsAST jsCode jsCode jsCode
  46. 46. empower power-assert empower enhance assert
  47. 47. empower context AssertionError power-assert assert text power-assert-formatter context text Error assertion
  48. 48. One more thing...
  49. 49. altJS!
  50. 50. 当日のデモ4のリンク http://bit.ly/1jwqQd1
  51. 51. https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
  52. 52. espoweresprima instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify ) jsCode jsAST escodegen jsAST jsAST jsAST jsCode jsCode jsCode
  53. 53. espower coffee- script-redux custom instrumentor csCode jsAST escodegen jsAST jsAST jsAST jsCode csCode jsCode
  54. 54. 取り組んだ こと
  55. 55. substack pattern UMD pattern
  56. 56. power-assert が もたらすもの
  57. 57. 覚えることは少なく、かつ テスト失敗時の情報は多く
  58. 58. 何もなければ黙るのみ 落ちるときはやかましく
  59. 59. テスト書きましょう!
  60. 60. ご清聴ありがとうございました
  61. 61. https://github.com/twada/power-assert ご清聴ありがとうございました

×