4

任何人都可以帮助我并解释为什么 expect_that 如果[]添加到停止消息中不起作用,即f1起作用但f2不起作用。

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]"))
4

1 回答 1

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))
于 2015-02-01T19:49:51.630 回答