[英]R package code coverage with test_that and readline()
早上好,我正在構建一個 R package 並嘗試獲得盡可能高的代碼覆蓋率(通過 codecov)。 但是,當 function 需要通過 readline() 輸入時,我正在努力使用 test_that。 這是一個簡化的 function,它以與我類似的方式使用 readline()。
fun<-function(){
y<-as.numeric(readline((prompt="Enter a number: ")))
res<-2*y
res
}
有什么方法可以將test_that()
與此 function 一起使用,而無需在每次運行時手動輸入數字? 比如,只為測試設置一個默認輸入號碼?
謝謝!
從?readline()
:
本【功能】只能在交互式session中使用。
在這種情況下,我可能會將我的 function 重寫為如下內容:
fun <- function(y = readline(prompt = "Enter a number: ")) {
y <- as.numeric(y)
res <- 2 * y
res
}
當以交互方式使用時,它的工作原理是一樣的,但是當您想測試 function 時,您可以通過編程方式進行,例如:
expect_equal(
fun(y = 10),
20
)
其他替代方法是在您的 package 或環境變量中包含一些選項,告訴您的代碼您處於測試模式,並改變fun()
的行為。 參見例如這個關於 SO 的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.