新しい
テストライブラリの
ご提案 (公開版)
和田 卓人 (a.k.a id:t-wada or @t_wada)
Aug 21, 2013 @東京 Node 学園 #10
当日の講演動画のリンク
http://bit.ly/1glmC2G
和田 卓人
id: t-wada
@t_wada
github: twada
とてもニッ
チなものを
作りました
注: 黒い画面
しか出てき
ません
通称「きのこ本」
•良いインタフェースとは次の2つの条件
を満たすインタフェース
•正しく使用する方が操作ミスをする
より簡単
•誤った使い方をすることが困難
きのこ53: 正しい使い方を簡単
に、誤った使い方を困難に
正しく使用する方が操作ミスを
するより簡単
誤った使い方をすることが困難
正しく使用する方が操作ミスを
するより簡単
誤った使い方をすることが困難
デモ1
当日のデモ1のリンク
http://bit.ly/1dNVQW0
字面だけでなく失敗時の
情報も重要
ふるまいがインターフェ
イスに制約を与える
assert.equal((7 - 3), 4);
assert.equal((7 - 3), 4, "4でしょ");
assert#equal(actual, expected)
assert#equal(actual, expected, ...
JUnit
assertEquals(expected, actual)
assertEquals(message, expected, actual)
TestNG
assertEquals(actual, expected)
assertE...
どうしてこ
うなった
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Xunit
犯人はファウラーだった(自白済)
正しく使用する方が操作ミスを
するより簡単
誤った使い方をすることが困難
間違えやすい引数は良く
ない
-> RSpec っぽく書け
れば良い?
デモ2
当日のデモ2のリンク
http://bit.ly/1lA73fr
そもそも
assert の情報量が多け
ればいいのでは?
デモ3
当日のデモ3のリンク
http://bit.ly/1pHYbSc
何が起こっ
たんです?
Caught: Assertion failed:
assert 5 == list.max() - 1
| | | |
| | 5 4
| [1, 3, 4, 5, 2]
false
at test.run(test.groovy:3)
ht...
新しい
テストライブラリの
ご提案
和田 卓人 (a.k.a id:t-wada or @t_wada)
Aug 21, 2013 @東京 Node 学園 #10
power-assert
js 版を作ったよ
和田 卓人 (a.k.a id:t-wada or @t_wada)
Aug 21, 2013 @東京 Node 学園 #10
https://github.com/twada/power-assert
https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
https://speakerdeck.com/michaelficarra/spidermonkey-parser-api-a-standard-for-structured-js-representations
https://speakerdeck.com/michaelficarra/spidermonkey-parser-api-a-standard-for-structured-js-representations
https://speakerdeck.com/michaelficarra/spidermonkey-parser-api-a-standard-for-structured-js-representations
https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
power-assert の
しくみ
instrumentor (espower-loader / grunt-espower /
gulp-espower / espowerify )
jsCode
esprima
instrumentor (espower-loader / grunt-espower /
gulp-espower / espowerify )
jsCode
jsCode
esprima
instrumentor (espower-loader / grunt-espower /
gulp-espower / espowerify )
jsCode
jsAST
jsCode
espoweresprima
instrumentor (espower-loader / grunt-espower /
gulp-espower / espowerify )
jsCode
jsAST
jsAST
jsCode
espoweresprima
instrumentor (espower-loader / grunt-espower /
gulp-espower / espowerify )
jsCode
jsAST
jsAST
jsAST
jsCode
espoweresprima
instrumentor (espower-loader / grunt-espower /
gulp-espower / espowerify )
jsCode
jsAST
escodegen
jsAST
jsA...
espoweresprima
instrumentor (espower-loader / grunt-espower /
gulp-espower / espowerify )
jsCode
jsAST
escodegen
jsAST
jsA...
espoweresprima
instrumentor (espower-loader / grunt-espower /
gulp-espower / espowerify )
jsCode
jsAST
escodegen
jsAST
jsA...
empower
power-assert
empower
enhance
assert
empower
context
AssertionError
power-assert
assert
text
power-assert-formatter
context
text
Error
assertion
One more
thing...
altJS!
当日のデモ4のリンク
http://bit.ly/1jwqQd1
https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
espoweresprima
instrumentor (espower-loader / grunt-espower /
gulp-espower / espowerify )
jsCode
jsAST
escodegen
jsAST
jsA...
espower
coffee-
script-redux
custom instrumentor
csCode
jsAST
escodegen
jsAST
jsAST
jsAST
jsCode
csCode
jsCode
取り組んだ
こと
substack pattern
UMD pattern
power-assert が
もたらすもの
覚えることは少なく、かつ
テスト失敗時の情報は多く
何もなければ黙るのみ
落ちるときはやかましく
テスト書きましょう!
ご清聴ありがとうございました
https://github.com/twada/power-assert
ご清聴ありがとうございました
power-assert in JavaScript
power-assert in JavaScript
power-assert in JavaScript
Upcoming SlideShare
Loading in...5
×

power-assert in JavaScript

3,215

Published on

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

Published in: Technology
0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,215
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
15
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide

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 ご清聴ありがとうございました
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×