我目前正在编写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是的,是一个错字。解决它。
—
helpermethod 2012年
error_message
与其他任何东西进行比较,我会说这没关系。但是,我认为您想要[[ $error_message ]]
,否则您正在测试文字字符串“ error_message”是否存在。