我目前正在编写一个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=''
哪一个更好?它实际上有所作为吗?或者,也许我应该有一个额外的标志表明该消息设置?
如果你从不比较'error_message'和其他任何东西,我会说没关系。但是,我认为你需要'[[$ error_message]]',否则你正在测试字符串“error_message”存在。 – chepner
@chepner是的,是一个错字。修复。 – helpermethod