Piszę niektóre testy dla pakietu R i chciałbym mieć R CMD check
sprawdzić, czy funkcje wyświetlają prawidłowe ostrzeżenia dla niektórych wejść. Ale nie mogę wymyślić, jak przechwycić wynik ostrzeżenia, aby go przetestować.Jak napisać test pakietu w R, aby zobaczyć, czy ostrzeżenie jest poprawnie zgłaszane?
Więc jeśli mam funkcji, takich jak:
throwsWarning<-function(x){
if(x>0){
warning('Argument "x" is greater than zero, results may be incorrect')
}
# do something useful ...
}
chciałbym się coś w moim pliku testowego jak:
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')
}
tej pory znalazłem możliwych rozwiązań cząstkowych zmieniając options
tak, że ostrzeżenia są traktowane jako błędy i otoczenie z blokiem trycatch
. Również uznano testowanie wartości last.warning
, ale wydaje się to niebezpieczne, jeśli ostrzeżenie nie zostanie wygenerowane (przetestuje poprzednią wartość). Wydaje się, że musi być łatwy sposób na zrobienie tego, czego mi brakuje?
Wydaje się, że nie używasz 'testthat' w swoich testach. – Spacedman