我正在为 R 包编写一些测试,并希望R CMD check
验证函数是否针对某些输入显示正确的警告。但我不知道如何捕获警告输出以便进行测试。
所以如果我有这样的功能:
throwsWarning<-function(x){
if(x>0){
warning('Argument "x" is greater than zero, results may be incorrect')
}
# do something useful ...
}
我想在我的测试文件中有一些东西,比如:
warningOutput <-try( throwsWarning(1))
if (warningOutput!='Argument "x" is greater than zero, results may be incorrect'){
stop('function "throwsWarning" did not produce correct warning when x>0')
}
到目前为止,我已经通过更改找到了可能的部分解决方案,options
以便将警告视为错误并用trycatch
块包围。也被认为是 的测试值last.warning
,但如果不抛出警告,这似乎很危险(将测试以前的值)。似乎必须有一个简单的方法来做到这一点,我错过了?