配列を返す関数をテストしています。配列は環境によって異なる場合がありますが、常に少なくとも 1 つの定数値 (テストしたい値) が含まれます。
Perl 5.12 を使用しているので、smartmatch 演算子を使用して、要素が配列内にあるかどうかを確認できます。
ok($known_value ~~ @returned, 'testing method abc')
しかし、「見つかった」部分と「期待された」部分を使用したis
andの強化された出力が気に入っています。like
だから私はこれを試しました:
cmp_ok($known_value, '~~', @returned, 'testing method abc')
cmp_ok
比較の両方の部分でスカラー を期待しているように見えるため、これは機能しません。
not ok 1 - testing method abc
# Failed test 'testing method abc'
# at abc.t line 53.
# 'stable_value'
# ~~
# '2'
"expected" スロットの配列は、スカラー コンテキストで評価され、2 に変換されます。
配列を使用して文字列化するハックでこれを回避like
できますが、スマートマッチ演算子を比較方法として使用できるテストがあるwhen
とよいでしょう ( など)。Test::More または他のモジュールでこれを行う方法はありますか?
現時点で私は使用しています:
ok($known_value ~~ @returned, 'testing method abc')
or diag (
"ERROR:\n".
"Found: ". Dumper @returned."\n".
"Expected at least one element equal to '$known_value'"
)
これは私ができる最善のことですか?