2

expect_that 単体テストの期待値を複数持つ方法はありますか? たとえば、特定のステートメントについて、関数が警告を出し、数値も返すexpect_that()ことを期待したいと思います。f()10

4

2 に答える 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 に答える