在源文件中进行testthat测试时出现错误:Error in x[[method]](...) : 尝试应用非函数

16

我正在开发一个 R 应用程序,并想到了一个解决方法,可以在其中集成testthat(通常需要将您的项目打包),方法是向项目根目录添加 DESCRIPTION 文件。

我从一位同事那里学到了这种方法,他成功地让它像这样工作。

问题是,当我尝试测试任何东西(即使是空的测试文件)时,就会出现以下错误:

Error in x[[method]](...) : attempt to apply non-function
Calls: <Anonymous> ... <Anonymous> -> o_apply -> lapply -> FUN -> <Anonymous>
Execution halted

我知道的是这个问题只出现在 macOS 上。我的同事在 Windows 上仍然可以无问题地运行这个应用程序。

这是怎么回事?

可以复现这个错误的 MCVE 是:

  • 创建一个包含以下内容的最小化的 DESCRIPTION 文件:

    Package: testpckg
    
  • 将testthat添加到您的项目中:

    usethis::use_testthat()
    usethis::use_test("foo")
    
  • 创建空文件bar.R
  • test-foo.R中,引用bar:source("bar.R")

RStudio版本1.1.447, R版本3.4.4,Mac OS X 10_13_4


1
你可以发布一下导致错误的代码吗? - Kara Woo
我使用了相当多的文件,因此在一个新的、干净的项目中复现错误更容易。我已经编辑了描述。 - Teodor Ciuraru
很遗憾,我无法在我的MacBook上重现这个问题。 - Kara Woo
我有同样的问题。你解决了吗?(我的同事运行同样的代码却没有这个问题!) - Christoph
请查看我对下面答案的编辑... - Christoph
我使用版本号为 2.0.1,通过 usethis::use_testthat()usethis::use_test("foo") 可以正常工作,但是需要使用 context("test-foo") 替代 source("bar.R") - Rγσ ξηg Lιαη Ημ 雷欧
1个回答

21

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接