6
R 프로젝트에서 단위 테스트를 위해 testthat
라이브러리를 사용하고 있습니다. 나는 데이터베이스 쿼리에 의존하는 코드를 테스트하지만, 실제 쿼리 자체를 테스트하지 싶습니다. 즉, 데이터베이스 연결 및 쿼리를 조롱하거나 (미리 결정된 데이터 집합을 반환하거나 테스트 데이터베이스에 도달하도록)하고 싶습니다.단위 테스트를 위해 R로 데이터베이스 연결/쿼리를 만드는 방법
나는이 기능을 제공하는 루비와 다른 언어로 된 상당수의 보석을 알고있다. R에 대한 그런 것이 있습니까? 아니면 어떻게해야합니까?
some_file.R : 더 패키지이 편리이없는 경우, testthat::with_mock()
내 가장 좋은 건
test_that("test query", {
dataset <- sqlQuery("SELECT * FROM some_database_table")
#How to make this not actually hit the production database?
expect_equal(nrow(dataset), 2)
})
입니다 : 테스트 파일에서
sqlQuery <- function(some_query) {
chnl <- odbcConnect(get.db.name())
data <- sqlQuery(chnl, query)
}
?
library(testthat)
sqlQuery <- function(some_query) {
chnl <- odbcConnect(get.db.name())
data <- sqlQuery(chnl, query)
}
with_mock(sqlQuery = function(some_query) {
if (grepl("SELECT * FROM some_database_table", some_query, fixed = TRUE))
return(mtcars[1:2,]) # could also be loaded from file via "load" after using "save" once
return(mtcars) # default return value
},
{
# Calls the mocked function now...
dataset <- sqlQuery("SELECT * FROM some_database_table")
expect_equal(nrow(dataset), 2)
}
)
: