在不开发包时测试 local_mocked_bindings

问题描述 投票:0回答:1

我正在开发一个闪亮的应用程序并使用 testthat 进行单元测试。我有一个包含测试的文件夹,我用

testthat::test_dir
运行。但是,我不知道如何使用模拟功能,因为我收到的错误表明我不在包中。 例子: 具有功能的源文件:

base_fn <- function(){
  0
}

mocking_result <- function(){
  1
}

我的测试:

test_that("Mocking a function works",{
  local_mocked_bindings(base_fn = mocking_result)
  
  expect_equal(base_fn(), 1)

})

我不断收到错误

Error in 
dev_package()
: No packages loaded with pkgload
。我尝试将 .package 参数设置为 NA、NULL、“base”,但没有帮助。 如果我不想将所有内容格式化为包,我可以使用 local_mocked_bindings 吗?我发现我可以使用
with_mock
来实现此目的,但据我所知,该功能已被取代,因此我不希望它将来变得无法使用。

r mocking testthat
1个回答
0
投票

由于我面临同样的问题,我直接在

testthat
软件包存储库上提出问题,答案是

抱歉,这些功能只能在包内使用。我认为解决你的问题的最简单方法是将你的 R 脚本放在

R/
目录中,将测试放在
tests/testthat/
目录中,并添加一个最小的
DESCRIPTION
😄

© www.soinside.com 2019 - 2024. All rights reserved.