expect_that 単体テストの期待値を複数持つ方法はありますか? たとえば、特定のステートメントについて、関数が警告を出し、数値も返すexpect_that()
ことを期待したいと思います。f()
10
2 に答える
2
context("Checking blah")
test_that("blah works",{
f <- function(){warning("blah"); return(10)}
expect_warning(x <- f())
expect_equal(x, 10)
})
警告を確認しながら、出力を保存できます。その後、出力が期待どおりであることを確認します。
于 2014-04-30T20:25:48.980 に答える
2
test_that("f works as expected", {
expect_warning(f())
expect_equal(f(), 10)
}
)
あなたの文脈を正しく理解していれば、これはうまくいくはずです。いずれかまたは両方の期待が満たされない場合、テストは失敗し、レポートされます。
関数を 1 回だけ実行するには、関数を test_that 内にラップしてみてください。
test_that("f works as expected", {
a <- tryCatch(f(), warning=function(w) return(list(f(), w)))
expect_equal(a[[2]], "warning text")
expect_equal(a[[1]], 10)
rm(a)
}
)
私はこれをテストしていないので、特定のケースで機能するかどうかはわかりませんが、過去に test_that で同様のアプローチを使用しました。
于 2014-04-30T19:48:06.590 に答える