私は現在、bashテストフレームワークを作成しています。テスト関数では、標準のbashテスト([[
)と定義済みのマッチャーの両方を使用できます。マッチャーは '[['のラッパーであり、戻りコードを返すほかに、何が期待されているかを示す意味のあるメッセージを設定します。
例:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
したがって、マッチャーが使用され、失敗した場合にのみ、error_messageが設定されます。
今、ある時点で、テストが成功したかどうかをテストします。成功した場合、期待値を緑で表示し、失敗した場合は赤で表示します。
さらに、error_messageが設定されている可能性があるため、メッセージが存在するかどうかをテストし、出力してから設定を解除します(次のテストではが設定されない可能性があるためerror_message
)。
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
さて、私の質問は、変数の設定を解除するか、単に ''に設定する方が良いか、
error_message=''
どちらがいいですか?実際に違いはありますか?または、メッセージが設定されたことを示すフラグを追加する必要がありますか?
@chepnerええ、タイプミスでした。修正しました。
—
ヘルパーメソッド2012
error_message
他のものと決して比較しないならば、私はそれは問題ではないと思います。しかし、私はあなたが望むと思います[[ $error_message ]]
、そうでなければあなたはリテラル文字列「error_message」が存在することをテストしています。