bashにはファーストクラスの関数がないため、関数に文字列を渡して無名関数をシミュレートしています。関数は、によって評価されeval
ます。
it() {
echo "$1" # prints the description of the spec
beforeEach # a setup function
eval "$2"
if (($? == 0)); then
# do something
fi
afterEach # a cleanup function
}
it "should echo something" '{
echo "something"
}'
これにより、非常に簡潔なテストを作成できます(仕様を定義します)。これがevalの有効な使用法であるかどうか疑問に思います。
編集
匿名関数文字列では開始{と終了}は必要ないことを認識しています。それは、ジャスミンのようなものに似ているということです。
編集
これpseudo anonymous function
は実際にはテストです。つまり、テストの最後に次のようなものがあります。
[[ var == 'foo' ]]
また
((i > 10))
つまり、ある種のテスト(または、XUnit用語ではassert)です。次に評価される戻りコード以外のものを返す必要はありません。戻りコードが0(成功)の場合、説明は緑色で出力され、それ以外の場合は赤色で出力されます(テストは失敗しました)。