mock | R Documentation |
Mock object's primary use is to record calls that are made on the mocked function.
mock(..., cycle = FALSE, envir = parent.frame())
mock_args(m)
mock_calls(m)
## S3 method for class 'mock'
length(x)
... |
Values returned upon subsequent calls. |
cycle |
Whether to cycle over the return values. If |
envir |
Where to evaluate the expressions being returned. |
m |
A |
x |
A |
Optionally values/expressions can be passed via ...
for the
mock object to return them upon subsequent calls. Expressions are
evaluated in environment envir
before being returned. If no
value is passed in ...
then NULL
is returned.
Passing an expression or a function call via ...
is also a
way to implement side effects: keep track of the state of code
under testing, throw an exception when a condition is met, etc.
mock_calls
and mock_args
can be used to access the
list of calls made on a mocked function and a respective list of
values of arguments passed to each of these calls.
mock()
returns a mocked function which can be then used
with with_mock
.
mock_args()
returns a list
of list
s
of argument values.
mock_calls()
returns a list
of call
s.
length.mock()
returns the number of calls invoked on m
.
library(testthat)
m <- mock(1)
with_mock(summary = m, {
expect_equal(summary(iris), 1)
expect_called(m, 1)
expect_call(m, 1, summary(iris))
expect_args(m, 1, iris)
})
# multiple return values
m <- mock(1, "a", sqrt(3))
with_mock(summary = m, {
expect_equal(summary(iris), 1)
expect_equal(summary(iris), "a")
expect_equal(summary(iris), 1.73, tolerance = .01)
})
# side effects
m <- mock(1, 2, stop("error"))
with_mock(summary = m, {
expect_equal(summary(iris), 1)
expect_equal(summary(iris), 2)
expect_error(summary(iris), "error")
})
# accessing call expressions
m <- mock()
m(x = 1)
m(y = 2)
expect_equal(length(m), 2)
calls <- mock_calls(m)
expect_equal(calls[[1]], quote(m(x = 1)))
expect_equal(calls[[2]], quote(m(y = 2)))
# accessing values of arguments
m <- mock()
m(x = 1)
m(y = 2)
expect_equal(length(m), 2)
args <- mock_args(m)
expect_equal(args[[1]], list(x = 1))
expect_equal(args[[2]], list(y = 2))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.