我正在编写一个将请求的软件包与可用软件包进行比较的软件包。也就是说,我可以要求输入“ 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')
来查看是否可以修改搜索路径。没有骰子。
有没有一种方法可以在不向功能添加任何额外输入的情况下,控制功能作为当前安装的软件包的作用,仅用于测试目的?