我目前正在项目中使用R6类.
我想编写单元测试,也测试我正在使用的私有方法的功能(最好不要通过使用这些私有方法的更复杂的公共方法).
但是,我无法访问似乎访问私有方法.
我怎么做到最好?
谢谢!
Gre*_*lia 10
这是一个不需要环境破解或改变您想要测试的类的解决方案,而是创建一个为您进行测试的新类.
在R6派生类中,可以访问private其基类的方法(与需要关键字C++以及Java在何处protected获得相同结果的方法不同).因此,您可以编写一个TesterClass派生自您要测试的类.例如:
library(R6)
ClassToTest <- R6Class(
private = list(
privateMember = 7,
privateFunction = function(x){
return(x * private$privateMember)
}
)
)
TesterClass <- R6Class(
inherit = ClassToTest,
public = list(
runTest = function(x = 5){
if(x * private$privateMember != private$privateFunction(x))
cat("Oops. Somethig is wrong\n")
else
cat("Everything is fine\n")
}
)
)
t <- TesterClass$new()
t$runTest()
# Everything is fine
Run Code Online (Sandbox Code Playgroud)
这种方法的一个优点是,它可以保持您的环境清洁,以防您想要保存详细的测试结果.
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |