knitr::opts_chunk$set( comment = "#>", collapse = TRUE )
Time travel to test time dependent code - a port of Ruby's timecop
BEWARE: VERY ALPHA
Package API:
cat(paste(" -", paste(sprintf("`%s`", getNamespaceExports("timefuzz")), collapse = "\n - ")))
Features supported:
Hope to support soon:
remotes::install_github("ropensci/timefuzz")
library("timefuzz")
library(timefuzz) library(pendulum) library(testthat)
book_due()
is a toy function that tells us if a book is due
book_due <- function(due_date = Sys.Date() + 10) { sys_date() > due_date }
Given the due date of r Sys.Date() + 10
the book is not due
expect_false(book_due()) # FALSE
Create a time_fuzz
object
x <- time_fuzz$new() x
Call freez()
, passing the date you want to freeze time to, and then a code block to run
in the context of that frozen time. Here we'll freeze time to today + 450 days
x$freeze(Sys.Date() + 450, { expect_true(book_due()) })
book_due()
results in TRUE
now, whereas it was FALSE
above in real time
x <- time_fuzz$new() ## set to today + 450 days x$freeze(Sys.Date() + 450)
We're in the freezed date. So any time based actions using the [pendulum][] package are now using your frozen time context.
sys_time()
call $unfreeze()
to unfreeze
x$unfreeze()
now we're back in current time
sys_time()
timefuzz
in R doing citation(package = 'timefuzz')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.