#r #unit-testing
Вопрос:
Я хотел бы реализовать модульное тестирование в R путем сравнения списка объектов в среде, хранящейся в виде rds, с текущей средой. Я делюсь некоторыми кодами, которые я пытался реализовать, чтобы дать представление о том, чего бы я хотел
library(rlang)
a = FALSE
b = "a"
c = 2.3
d = 1:3
saveRDS(mget(ls()), file = "unit.rds")
# unit_t <- readRDS(file = "unit.rds")
env <- new_environment(readRDS(file = "unit.rds"))
identical(global_env(), current_env())
identical(new_environment(readRDS(file = "unit.rds")), global_env())
identical(mget(ls()), list(readRDS(file = "unit.rds")))
Заранее спасибо!
Комментарии:
1. На первый взгляд может показаться, что
global_env()
содержитenv
, ноunit.rds
не содержит, поэтомуidentical(new_environment(readRDS(file = "unit.rds")), global_env())
не может быть правдой. То же самое дляidentical(mget(ls()), list(readRDS(file = "unit.rds")))
,mget(ls())
будет включатьenv
, что не является частьюunit.rds
.2. Спасибо @GregorThomas, однако вы заметите, что комментирование этой строки по-прежнему приводит к ЛОЖНЫМ выводам
3. Достаточно ли сравнить, что имена объектов в каждой среде одинаковы, или вы, по сути, хотите сравнить сами объекты и вернуть значение true, только если каждая пара объектов идентична?
4. Я бы предпочел последнее. Я понял, что первое может быть достигнуто с помощью идентичного(mget(ls ()), как.list(readRDS(файл = «unit.rds»)))