Sto scrivendo alcuni test per un pacchetto R e vorrei che R CMD check
verifichi che le funzioni visualizzino gli avvisi corretti per determinati input. Ma non riesco a capire come catturare l'output di avviso in modo da poterlo testare.Come scrivere un test del pacchetto in R per vedere se l'avviso è stato lanciato correttamente?
Quindi, se ho una funzione come:
throwsWarning<-function(x){
if(x>0){
warning('Argument "x" is greater than zero, results may be incorrect')
}
# do something useful ...
}
vorrei un qualcosa nel mio file di test come:
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')
}
soluzioni parziali Finora ho trovato possibile modificando options
in modo che gli avvertimenti vengano trattati come errori e l'ambiente circostante con un blocco trycatch
. Considerato anche il valore di prova di last.warning
, ma ciò sembra pericoloso se l'avvertimento non viene lanciato (proverebbe il valore precedente). Sembra che ci debba essere un modo semplice per fare questo che mi manca?
Sembra che tu non stia usando 'testthat' nei test. – Spacedman