jp.rubyist.net
13 Jul '12, 6am
@spring_kuma どうなんでしょう。確かにこの記事にはそれっぽいこと書いてますが・・・
RSpec とは、公式サイト の説明によれば、「プログラムの振舞 (behaviour)」を記述するためのドメイン特化言語 (DomainSpecific Language:DSL) を提供するフレームワーク」 です。 プログラムの振舞? ドメイン特化言語?……順番に説明させてください。 プログラムの振舞 (behaviour) 「プログラムの振舞」とはプログラム全体あるいは様々なレベルでの部分 (モ ジュールやクラス、メソッド) に対して期待する振舞 (behaviour:ビヘイビア) の ことです――といっても何も特別なものではありません。 具体例で説明しましょう。例えば、ある Array インスタンスが空の場合に期待す る振舞は次のようなものです。 arr = [] arr.empty? #=> 振舞として true を返すことを期待する arr.size #=> 振舞として 0 を返すことを期待する これは Test::Unit を使って次のように書けます。 require 'test/unit' class ArrayTest < Test::Unit::TestCase def setup @empty_array = [] end def test_empty? assert(@empty_array.empty?) end def test_size assert_equal(0, @empty_array.size) end def teardown @empty_array = nil end end つまり「プログラムの振舞」といっても何も難しいものではありません。「これまで Test::Unit で検証していたもの」と意味するところは同じです。 なお、このようなテストケースで teardown メソッドを利用することは稀ですが、 この後で説明する RSpec での記述と対比させるために、あえて記述しています。 ドメイン特化言語 (DSL) ドメイン特化言語 (Domain Specific Language:DSL)...
Full article:
http://jp.rubyist.net/magazine/?0021-Rspec#l9