Use expect_output(), expect_message() and expect_warning() to match specified outputs. Use expect_error() or expect_condition() to match individual errors or conditions. Use expect_silent() to assert that there should be no output of any type.

expect_output(object, regexp = NULL, ..., info = NULL, label = NULL)

expect_error(object, regexp = NULL, class = NULL, ..., info = NULL,
  label = NULL)

expect_condition(object, regexp = NULL, class = NULL, ..., info = NULL,
  label = NULL)

expect_message(object, regexp = NULL, ..., all = FALSE, info = NULL,
  label = NULL)

expect_warning(object, regexp = NULL, ..., all = FALSE, info = NULL,
  label = NULL)

expect_silent(object)

Arguments

object

object to test

regexp

regular expression to test against.

If NULL, the default, asserts that there should be an output, a messsage, a warning, or an error, but does not test for specific value.

If NA, asserts that there should be no output, messages, warnings, or errors.

...

Arguments passed on to expect_match

all

Should all elements of actual value match regexp (TRUE), or does only one need to match (FALSE)

perl

logical. Should Perl-compatible regexps be used?

fixed

logical. If TRUE, pattern is a string to be matched as is. Overrides all conflicting arguments.

info

extra information to be included in the message (useful when writing tests in loops).

label

object label. When NULL, computed from deparsed object.

class

Instead of supplying a regular expression, you can also supply a class name. This is useful for "classed" conditions.

all

For messages and warnings, do all need to match the regexp (TRUE), or does only one need to match (FALSE)

Value

The first argument, invisibly. If expect_error() captures an error, that is returned instead of the value.

Details

Note that warnings are captured by a custom signal handler: this means that options(warn) has no effect.

See also

Other expectations: comparison-expectations, equality-expectations, expect_length, expect_match, expect_named, inheritance-expectations, logical-expectations

Examples

# Output -------------------------------------------------------------------- str(mtcars)
#> 'data.frame': 32 obs. of 11 variables: #> $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... #> $ cyl : num 6 6 4 6 8 6 8 4 4 6 ... #> $ disp: num 160 160 108 258 360 ... #> $ hp : num 110 110 93 110 175 105 245 62 95 123 ... #> $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ... #> $ wt : num 2.62 2.88 2.32 3.21 3.44 ... #> $ qsec: num 16.5 17 18.6 19.4 17 ... #> $ vs : num 0 0 1 1 0 1 0 1 1 1 ... #> $ am : num 1 1 1 0 0 0 0 0 0 0 ... #> $ gear: num 4 4 4 3 3 3 3 4 4 4 ... #> $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
expect_output(str(mtcars), "32 obs") expect_output(str(mtcars), "11 variables") # You can use the arguments of grepl to control the matching expect_output(str(mtcars), "11 VARIABLES", ignore.case = TRUE) expect_output(str(mtcars), "$ mpg", fixed = TRUE) # Messages ------------------------------------------------------------------ f <- function(x) { if (x < 0) message("*x* is already negative") -x } expect_message(f(-1)) expect_message(f(-1), "already negative") expect_message(f(1), NA) # You can use the arguments of grepl to control the matching expect_message(f(-1), "*x*", fixed = TRUE) expect_message(f(-1), "NEGATIVE", ignore.case = TRUE) # Warnings -------------------------------------------------------------------- f <- function(x) { if (x < 0) warning("*x* is already negative") -x } expect_warning(f(-1)) expect_warning(f(-1), "already negative") expect_warning(f(1), NA) # You can use the arguments of grepl to control the matching expect_warning(f(-1), "*x*", fixed = TRUE) expect_warning(f(-1), "NEGATIVE", ignore.case = TRUE) # Errors -------------------------------------------------------------------- f <- function() stop("My error!") expect_error(f()) expect_error(f(), "My error!") # You can use the arguments of grepl to control the matching expect_error(f(), "my error!", ignore.case = TRUE) # Silent -------------------------------------------------------------------- expect_silent("123") f <- function() { message("Hi!") warning("Hey!!") print("OY!!!") }
# NOT RUN { expect_silent(f()) # }