The goal of mockr is to provide a drop-in replacement for testthat::with_mock()
which will be deprecated in the next version of testthat
. The only exported function, with_mock()
, is modeled closely after the original implementation, but now only allows mocking functions in the package under test. In contrast to the original implementation, no fiddling with R's internals is needed, and the implementation plays well with byte-compiled code. There are some caveats, though:
your.package::
or your.package:::
anymore, this is a limitation of the implementation.
your.package:::
, your code and tests should run just fine without that.If you encounter other problems, please file an issue.
some_func <- function() stop("oops")
some_other_func <- function() some_func()
# Calling this function gives an error
some_other_func()
#> Error in some_func(): oops
tester_func <- function() {
# Here, we override the function that raises the error
with_mock(
some_func = function() 42,
some_other_func()
)
}
# No error raised
tester_func()
#> [1] 42
# Mocking doesn't override functions in the same environment by design
with_mock(some_func = function() 6 * 7, some_other_func())
#> Error in some_func(): oops
Install from GitHub via
devtools::install_github("krlmlr/mockr")