函数expect_that从testthat遇到错误

时间:2015-02-01 19:38:59

标签: r testthat

任何人都可以帮助我并解释为什么expect_that如果[]被添加到停止消息时无效,即f1有效但f2没有&#39} ;吨

library(testthat)
f1 <- function(x){
  if(  x >= 1 ){
    stop("error 1")
  }
}
expect_that(f1(x=1.4), throws_error("error 1"))
f2 <- function(x){
  if(  x >= 1 ){
    stop("error [1]")
  }
}
expect_that(f2(x=1.4), throws_error("error [1]"))

1 个答案:

答案 0 :(得分:7)

expect_that正在寻找正则表达式以匹配错误,因此您需要转义方括号,以便它们按字面解释而不是作为模式定义:

expect_that(f2(x=1.4), throws_error("error \\[1\\]"))

似乎有效。

或者您可以指定fixed=TRUE

expect_that(f2(x=1.4), throws_error("error [1]", fixed = TRUE))