power-assert in javascript
DESCRIPTION
power-assert in JavaScript Aug 21, 2013 at 10th Tokyo Node Gakuen #tng10TRANSCRIPT
新しいテストライブラリのご提案 (公開版)和田 卓人 (a.k.a id:t-wada or @t_wada)Aug 21, 2013 @東京 Node 学園 #10
和田 卓人id: t-wada@t_wadagithub: twada
とてもニッチなものを作りました
注: 黒い画面しか出てきません
通称「きのこ本」
•良いインタフェースとは次の2つの条件を満たすインタフェース
•正しく使用する方が操作ミスをするより簡単
•誤った使い方をすることが困難
きのこ53: 正しい使い方を簡単に、誤った使い方を困難に
正しく使用する方が操作ミスをするより簡単
誤った使い方をすることが困難
正しく使用する方が操作ミスをするより簡単
誤った使い方をすることが困難
デモ1
字面だけでなく失敗時の情報も重要
ふるまいがインターフェイスに制約を与える
assert.equal((7 - 3), 4);assert.equal((7 - 3), 4, "4でしょ");
assert#equal(actual, expected)assert#equal(actual, expected, message)
Node の assert モジュール
JUnitassertEquals(expected, actual)assertEquals(message, expected, actual)
TestNGassertEquals(actual, expected)assertEquals(actual, expected, message)
PHPUnitassertEquals(expected, actual)assertEquals(expected, actual, message)
他の xUnit はどうか
どうしてこうなった
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Xunit
犯人はファウラーだった(自白済)
正しく使用する方が操作ミスをするより簡単
誤った使い方をすることが困難
間違えやすい引数は良くない
-> RSpec っぽく書ければ良い?
デモ2
そもそもassert の情報量が多け
ればいいのでは?
デモ3
何が起こったんです?
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
新しいテストライブラリの
ご提案和田 卓人 (a.k.a id:t-wada or @t_wada)Aug 21, 2013 @東京 Node 学園 #10
power-assertjs 版を作ったよ
和田 卓人 (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 )
jsCodejsAST
jsCode
espoweresprima
instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify )
jsCodejsAST
jsAST
jsCode
espoweresprima
instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify )
jsCodejsAST
jsASTjsAST
jsCode
espoweresprima
instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify )
jsCodejsAST
escodegen
jsASTjsAST
jsAST
jsCode
espoweresprima
instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify )
jsCodejsAST
escodegen
jsASTjsAST
jsASTjsCode
jsCode
espoweresprima
instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify )
jsCodejsAST
escodegen
jsASTjsAST
jsASTjsCode
jsCodejsCode
empower
power-assert
empower
enhanceassert
empower
context
AssertionError
power-assert
assert
text
power-assert-formatter
contexttext
Error
assertion
One more thing...
altJS!
https://speakerdeck.com/constellation/escodegen-and-esmangle-using-mozilla-javascript-ast-as-an-ir
espoweresprima
instrumentor (espower-loader / grunt-espower / gulp-espower / espowerify )
jsCodejsAST
escodegen
jsASTjsAST
jsASTjsCode
jsCodejsCode
espowercoffee-
script-redux
custom instrumentor
csCodejsAST
escodegen
jsASTjsAST
jsASTjsCode
csCodejsCode
取り組んだこと
substack patternUMD pattern
power-assert がもたらすもの
覚えることは少なく、かつテスト失敗時の情報は多く
何もなければ黙るのみ落ちるときはやかましく
テスト書きましょう!
ご清聴ありがとうございました
https://github.com/twada/power-assert
ご清聴ありがとうございました