約束の地

キャロの想い出

Test::Unit で「正規表現に一致」するかどうかのアサート

Test::Unit

RubyのテストフレームワークであるTest::Unitについてです*1

「正規表現に一致」する assert が見つからない

たぶん調べ方がイケてないと思うのですが「正規表現に一致」するかどうかの assert が、サラッと調べた感じでは見つかりませんでした。ドキュメントにも見当たらないです*2assert_equalにて、第一引数を"=~ /hoge/"としてもだめでした*3

結論(「正規表現に一致」する assert)

assert_match

使用例

def test_method_name
  assert_match /^Hello, .*!$/, hello
end

注意点

第一引数の取り方に注意です*4

OK

assert_match /^Hello, .*!$/, hello

NG(クォートの必要なし)

assert_match "/^Hello, .*!$/", hello

そしてすぐに気づく

assert_equalでいけますよね、これ。第一引数をbooleanにして、第二引数に===を使って比較すればいいですね。以下のような感じです。

def test_method_name
  assert_equal true, /^Hello, .*!$/ === hello
end

技術力の無さを露呈してしまい、相変わらず情けない……。

*1:2.1.1 です

*2:assert_no_match はあるのですが

*3:書式が間違っているのかも→間違ってました

*4:以下のようにハマるのは私だけかもしれません……

Powered by はてなブログ