R test覆盖内部基本函数

时间:2019-03-21 18:55:31

标签: r r-package testthat

我正在编写一个将请求的软件包与可用软件包进行比较的软件包。也就是说,我可以要求输入“ mgsub == 1.5.0”,然后在执行任何操作之前先查看是否已经安装了该版本的软件包。我通过查看installed.packages()[,3]

来确定已经安装的软件包

我正在努力成为一名优秀的开发人员并编写单元测试。虽然可以控制要安装的软件包,但不能控制已安装的软件包。因此,我需要一种方法(仅出于测试目的)覆盖installed.packages()中的内容。我最初的想法是将这段代码添加到单元测试的顶部,以此来破解它。

installed.packages <- function(){return(INST)}
INST = structure(c("mgsub", "lexRankr", "readOffice",
                   "lib1", "lib1", "lib1",
                   "1.5.1.3", "0.4.1", "0.2.2"),
                 .Dim = c(3L, 3L),
                 .Dimnames = list(c("mgsub", "lexRankr", "readOffice"),
                                  c("Package", "LibPath", "Version")))

但是,这不起作用。继续使用我实际安装的软件包列表而不是此软件包的测试。

我尝试使用testthat::setup来初始化函数,但是那也不起作用。

我尝试expect_is(installed.packages <- function(){return(INST)},'function')来查看是否可以修改搜索路径。没有骰子。

有没有一种方法可以在不向功能添加任何额外输入的情况下,控制功能作为当前安装的软件包的作用,仅用于测试目的?

0 个答案:

没有答案