我正在研究一个访问某些API的R包。
access_api <- function(t,k) {
if (missing(k)) {
k <- Sys.getenv("KEY")
if (identical(k, "")) {
stop(".Renviron doesnt have that variable", call. = FALSE)
}
c <- paste0("www.someapi.com","k",k,"t",t)
} else {
c <- paste0("www.someapi.com","k",k",t",t)
}
return (c)
}
在testthat目录中,我有一个测试函数,测试该函数是否符合我对返回数据结构的一些期望。
context("Check data structure")
test_api_call <- access_api(t)
test_that("Check data structure", {
skip_on_cran() # test should only run on travis
testthat::expect_true(row.names(test_api_call)[1] == "that")
testthat::expect_true(row.names(test_api_call)[2] == "this")
testthat::expect_true(row.names(test_api_call)[3] == "thatthis")
})
在当地,一切正常。然而,在travis上,我收到了我在access_api()
'预定义的错误消息.Renviron没有该变量'
接下来,我按照travis文档创建了一些加密令牌,对应于我在Sys.getenv("KEY")
中通过access_api()
导入的“KEY”:
travis encrypt KEY="somekeyIhave" --add
该输出已添加到.travis.yml
:
language: R
sudo: false # required
cache: packages
env:
matrix:
- warnings_are_errors: true
global:
secure: "OutputOfTraviencrypt"
但错误仍然存在。我在这里遗漏了什么。不幸的是,到目前为止我在该主题上找到的信息并未指出任何具体方向。