Макет функции без прикрепления пакета - PullRequest
0 голосов
/ 09 мая 2019

Я хотел бы смоделировать функцию httr::GET без необходимости прикреплять пакет httr. Приведенный ниже код не работает с неправильным синтаксисом:

# Packages
library(testthat)
library(mockery)

# Creat mock function
m <- mock(mtcars)
with_mock(httr::GET = m, {
    expect_equal(httr::GET(url = "www.google.com"), mtcars)
})

тогда как это работает:

# Creat mock function
library(httr)
m <- mock(mtcars)
with_mock(GET = m, {
    expect_equal(GET(url = "www.google.com"), mtcars)
})

Причина в том, что ... в testthat::with_mock принимает именованные параметры ans :: не имеет смысла в этом контексте. Я хотел бы иметь возможность смоделировать поведение функций, на которые ссылаются следующим образом:

some_function <- function(...) {
    httr::GET(...)
}

m <- mock(mtcars)
with_mock(GET = m, {
    expect_equal(httr::GET(url = "www.google.com"), mtcars)
})

Это не удалось:

Ошибка: функция GET не найдена в среде testthat.

Есть ли способ, которым я мог бы достичь этого без необходимости загружать пространство имен пакета и присоединять его к списку поиска?

...