Каковы некоторые отличия в выполнении тестов с использованием testthat и в интерактивном режиме? - PullRequest
0 голосов
/ 18 февраля 2020

Я использую Rstudio, R 3.6.2 на Windows 10.

Для настройки я делаю следующее

library(testthat)
remotes::install_github("xiaodaigh/disk.frame", ref = "development")
library(disk.frame)
setup_disk.frame()

И это тест, о котором идет речь. Он просто запускает некоторый код в disk.frame и отлично работает в интерактивном режиме

test_that("guard against github 256 #2", {
 test2 <- tibble::tibble(
    date = sample(1:10, 20, replace = TRUE),
    uid = sample(1:10, 20, replace = TRUE)
  )

  test_df = as.disk.frame(test2, nchunks = 2, overwrite=TRUE)

  ntd = names(test_df)

  correct_result = test_df %>%
    group_by(!!!syms(ntd)) %>%
    summarize(n=n()) %>% 
    collect

  incorrect_result = test_df %>%
    group_by(date, uid, proto, port) %>%
    summarize(n=n()) %>% 
    collect

  expect_equal(dim(incorrect_result), dim(correct_result))
})

, но код завершается ошибкой с

object 'ntd' not found
Backtrace:
  1. dplyr::group_by(., !!!syms(ntd))
  1. dplyr::summarize(., n = n())
  9. dplyr::collect(.)
 11. disk.frame::chunk_group_by(., !!!syms(ntd))
 28. rlang:::map(x, sym)
 29. base::lapply(.x, .f, ...)

, но ntd четко определен!

Итак, я хотел понять, как testth устанавливает мою среду? Как мне воспроизвести эту среду? И использовать browser() для отладки?

...