Printable Version of this PageHome PageRecent ChangesSearchSign In

26 October 2006

[BDD][Smalltalk] sSpec面白いです


Squeak-Dev経由でDave AstelさんのsSpecを知りました。BDD(Behavior Driven Development)をするためのSUnit拡張、もしくはBDDに特化したSmalltalk内部DSLといっても良いでしょう。

5 should not be a kind of: String. "5はStringの一種であってはならない"
#(1 2 3) should respond to: #size. "#(1 2 3)は#sizeに答えられるべき"
3.3 should be within: 0.5 of: 3.0. "3.3は3.0から0.5以内にある"

などと、実に自然に表明のコードを書くことができます。コードということを忘れるくらいですね。静的な言語ではこうはいきませんよ。

テスト用のmockも非常に簡単に書けます。

mock := Mock named: 'Test Mock'. "'Test Mock'というmock作成"
(mock shouldReceive: #reverse:)  "mockは#reverse:に答えるべきで"
	withAll: #('hello');     "引数は#('hello')"
	andReturn: 'olleh'.      "そのときに'olleh'を返す"

TestCaseでテストするときはこんな感じです。

self should: [(mock reverse: 'hello') = 'olleh']. 

もともとAmbrai Smalltalkで作っていたというところがシブイですね。次にVisualWorksに移植され、先日Squeakにやってきました。

世の中、まだまだ未知のSmalltalkerがいます。Squeakのみをwatchしているだけでは、いかんですね。


Last modified 26 October 2006 at 11:06 pm by ume