Как правильно смоделировать функцию функции из другого пакета, используя mockery :: stub - PullRequest
0 голосов
/ 08 мая 2019

Для модульного тестирования я хотел бы смоделировать функции из другого пакетаВ контексте приведенного ниже примера я хотел бы использовать пакет mockery для создания stub для base::mean.

Задача

Желаемые результаты

В приведенном ниже примере вызов base::mean в strange_mean должен вернуть 0.

strange_mean <- function(...) {
    base::mean.default(...)
}

# Replace mean with two
stub(where = base::mean.default,
     what = 'strange_mean',
     how = 0)

strange_mean(1:10)
# 5.5
# Desired: 0

Попытки

library(mockery)
strange_mean <- function(...) {
    base::mean.default(...)
}

# Replace mean with two
stub(where = base::mean.default,
     what = 'strange_mean',
     how = 0)

strange_mean(1:10)
# 5.5


strange_mean_two <- function(...) {
    mean(...)
}
stub(where = mean, what = 'strange_mean_two', how = 0)
strange_mean_two(1:10)
# 5.5

alt_mean <- function(...) {
    mean(...)
}

strange_mean_three <- function(...) {
    alt_mean(...)
}
stub(where = alt_mean, what = 'strange_mean_three', how = 0)
strange_mean_three(1:10)
# 5.5
...