Expect-statements verkennen

R-pakketten ontwikkelen

Jasmin Ludolf

Content Developer

Meest gebruikte expect-statements

  • Expect-statements valideren R-functies, of units

In het pakket testthat:

  • expect_equal(): gelijkheid met kleine marge
  • expect_identical(): exacte gelijkheid

  • expect_output(): tekstmatch van object-aanroep

 

  • expect_error(): fout bij object-aanroep
    • Fouten stoppen uitvoering; waarschuwingen niet
  • expect_warning(): waarschuwing bij object-aanroep
R-pakketten ontwikkelen

Van voorbeeld naar unittest

#' @examples
#' # Convert 32F to C
#' temp_converter(32, "Fahrenheit", "Celsius")
[1] 0

In het bestand tests/testthat/test-temp_converter.R:

library(testthat)
expect_equal(

object = temp_converter(32, "Fahrenheit", "Celsius"),
expected = 0
)
R-pakketten ontwikkelen

Identiek vs. gelijk verwachten

expect_identical()

expect_identical(sqrt(3) ^ 2, 3)
Error: sqrt(3)^2 (`actual`) not 
identical to 3 (`expected`).

  `actual`: 2.9999999999999996
`expected`: 3.0000000000000000

expect_equal()

  • Gebruik expect_equal() bij numerieke vergelijkingen
expect_equal(sqrt(3) ^ 2, 3)
  • expect_equal()
    • Staat kleine verschillen toe
    • Heeft een tolerance-argument; standaard is meestal goed
R-pakketten ontwikkelen

Uitvoer verwachten

expect_output(

print("Testing R Packages is fun"),
"funk"
)
Error: `print\("Testing R Packages is 
fun"\)` does not match "funk".
Actual value: "\[1\] "Testing R 
Packages is fun""

Uitvoerdiagram

R-pakketten ontwikkelen

Waarschuwing verwachten

expect_warning(
  temp_converter(-40, 
                 "Celsius", 
                 "Celsius")
)

Waarschuwingspictogram

R-pakketten ontwikkelen

Fout verwachten

expect_error(
  temp_converter(300, 
                 "Kelvin", 
                 "Fahrenheit")
)

Foutpictogram

R-pakketten ontwikkelen

Samenvatting

  • Elke expectation test één aspect van een functie
  • Samen moeten unittests 100% van de aspecten dekken
R-pakketten ontwikkelen

Laten we oefenen!

R-pakketten ontwikkelen

Preparing Video For Download...