Explorer les instructions expect

Développer des packages R

Jasmin Ludolf

Content Developer

Instructions expect les plus courantes

  • Les instructions expect valident des fonctions R, ou unités

Dans le package testthat :

  • expect_equal() : égalité avec petite tolérance
  • expect_identical() : égalité exacte

  • expect_output() : correspondance du texte produit par l'appel à object

 

  • expect_error() : erreur produite par l'appel à object
    • Les erreurs interrompent l'exécution ; pas les avertissements
  • expect_warning() : avertissement produit par l'appel à object
Développer des packages R

De l'exemple au test unitaire

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

Dans le fichier tests/testthat/test-temp_converter.R :

library(testthat)
expect_equal(

object = temp_converter(32, "Fahrenheit", "Celsius"),
expected = 0
)
Développer des packages R

Attendre l'identique vs l'égal

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()

  • Utilisez expect_equal() pour comparer des valeurs numériques
expect_equal(sqrt(3) ^ 2, 3)
  • expect_equal()
    • Tolère de petites différences
    • Argument tolerance : valeur par défaut généralement suffisante
Développer des packages R

Attendre une sortie

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""

Schéma de sortie

Développer des packages R

Attendre un avertissement

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

Panneau d'avertissement

Développer des packages R

Attendre une erreur

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

Panneau d'erreur

Développer des packages R

Récapitulatif

  • Chaque expectation doit tester un aspect d'une fonction
  • Ensemble, les tests unitaires doivent couvrir 100 % des aspects de la fonction
Développer des packages R

Passons à la pratique !

Développer des packages R

Preparing Video For Download...