У меня проблема с testthat
тестом ниже. конкретно первый тест.
Он запускается, когда я выполняю его напрямую (весь блок test_that()
), но не работает при использовании testthat::test_file()
в этом файле (и, очевидно, когда все тесты также выполняются). От
context("validate()")
x <- emeScheme_raw
print(validate( x = x, errorIfStructFalse = TRUE))
test_that(
"validata_raw() returns correct value when correct",
{
expect_known_value(
object = validate( x = x, errorIfStructFalse = TRUE),
file = "validate.CORRECT.rda"
)
}
)
names(x)[1] <- "experiment"
test_that(
"validata_raw() fails",
{
expect_known_value(
object = validate( x = x, errorIfStructFalse = FALSE),
file = "validate.DIFFERENCES.rda"
)
}
)
test_that(
"validata_raw() fails",
{
expect_error(
object = validate( x = x, errorIfStructFalse = TRUE),
regexp = ("Structure of the object to be evaluated is wrong. See the info above for details.")
)
}
)
Результаты в
testthat::test_file("./tests/testthat/test-validate.R")
✔ | OK F W S | Context
⠙ | 1 1 | validate()Names: 1 string mismatch
✖ | 2 1 | validate() [0.8 s]
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
test-validate.R:10: error: validata_raw() returns correct value when correct
missing value where TRUE/FALSE needed
1: expect_known_value(object = validate(x = x, errorIfStructFalse = TRUE), file = "validate.CORRECT.rda") at ./tests/testthat/test-validate.R:10
2: compare(act$val, ref_val, ...)
3: compare.default(act$val, ref_val, ...)
4: all.equal(x, y, ...)
5: all.equal.list(x, y, ...)
6: all.equal(target[[i]], current[[i]], check.attributes = check.attributes, use.names = use.names, ...)
7: all.equal.list(target[[i]], current[[i]], check.attributes = check.attributes, use.names = use.names, ...)
8: all.equal(target[[i]], current[[i]], check.attributes = check.attributes, use.names = use.names, ...)
9: all.equal.list(target[[i]], current[[i]], check.attributes = check.attributes, use.names = use.names, ...)
10: all.equal(target[[i]], current[[i]], check.attributes = check.attributes, use.names = use.names, ...)
11: all.equal.default(target[[i]], current[[i]], check.attributes = check.attributes, use.names = use.names, ...)
12: all.equal.list(target, current, ...)
13: paste0("Component ", if (use.names && nt[i] == nc[i]) dQuote(nt[i]) else i, ": ", mi)
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
══ Results ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
Duration: 0.8 s
OK: 2
Failed: 1
Warnings: 0
Skipped: 0
Если я правильно прочитал ошибку, ошибка возникает в функции expect_known_value()
, а не в функции validate()
, что имеет смысл, так как эта функция работает (если я поставлю ее после присвоения x <-
, она будет успешно выполнена и возвращает результаты.
Я знаю, что это трудно без воспроизводимого примера, но есть идеи, что происходит?