目录

mockr

rcc CRAN\_Status\_Badge Codecov test coverage

The goal of mockr is to provide a drop-in replacement for testthat::local_mock() and testthat::with_mock() which is deprecated in testthat 3.0.0. The functions mockr::local_mock() and mockr::with_mock() are modeled closely after the original implementation, but now only allow 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:

  1. Mocking external functions (in other packages) doesn’t work anymore. This is by design.
    • If you need to mock an external function, write a wrapper.
    • If that external function is called by third-party code, you’ll need to perhaps mock that third-party code, or look for a different way of implementing this test or organizing your code.
  2. You cannot refer to functions in your package via your.package:: or your.package::: anymore.
    • Remove the your.package:::, your code and tests should run just fine without that.

If you encounter other problems, please file an issue.

Example

library(mockr)

access_resource <- function() {
  message("Trying to access resource...")
  # For some reason we can't access the resource in our tests.
  stop("Can't access resource now.")
}

work_with_resource <- function() {
  resource <- access_resource()
  message("Fetched resource: ", resource)
  invisible(resource)
}

# Calling this function gives an error
work_with_resource()
#> Trying to access resource...
#> Error in access_resource(): Can't access resource now.

local({
  # Here, we override the function that raises the error
  local_mock(access_resource = function() 42)

  # No error raised
  work_with_resource()
})
#> Fetched resource: 42

Installation

Install from CRAN via

install.packages("mockr")

Code of Conduct

Please note that the mockr project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

关于

用于在R语言中模拟函数调用,便于单元测试

824.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号