Zaczynam wdrażać testy dla pakietu R i używam pakietu testthat
. Zauważ, że jestem nowy w testowaniu, więc być może moje podejście jest wyłączone.Jak sprawdzić, czy błąd nie występuje?
Mam funkcję, która obecnie kończy się niepowodzeniem po raz 16, kiedy jest wykonywana, i przed naprawieniem tego chcę napisać test regresji, który go wyłapie, jeśli ponownie się pojawi.
np Zawsze po rzuca ten sam komunikat o błędzie:
for i in (1:17) myfun()
myfun
nie zwraca niczego, ma tylko ten skutek uboczny otwarcia połączenia z bazą danych. Oczywiste jest dla mnie, że mogę napisać test, który oczekuje błąd i przechodzi jeżeli jest ona zwracana:
expect_error(for (i in 1:17) myfun())
Ale nie dość dostać jak napisać test, aby upewnić się, że błąd nie występuje. Ponieważ nie jest to oczywiste, być może moje podejście jest złe. Mogę wymyślić, jak napisać bardziej szczegółowe testy, ale chciałbym zacząć od tego.
Jakiego rodzaju test powinienem napisać, aby upewnić się, że taki błąd się nie pojawia?
dzięki, ale nie jestem zaznajomiony z korzystania z klamrami i średnikiem wewnątrz oczekiwań (np 'expect_true ({...; ...})') mogłyby proszę wyjaśnić? –
Możesz tam umieścić dowolne wyrażenie. I '{...; ...; ...} 'to tylko wyrażenie. W twoim przypadku powinno to być napisane jako 'expect_true ({for (i in 1:17) {myfun()}; TRUE})'. – kohske
Więc to zasadniczo próbuje złapać błąd, ponieważ błąd uniemożliwiłby ocenę drugiej części wyrażenia (w tym przypadku "TRUE")? –