簡體   English   中英

R package test_that 和 readline() 的代碼覆蓋率

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM