我目前在一个项目中使用R6类。
我想编写单元测试,以测试我正在使用的私有方法的功能(最好不要通过使用这些私有方法的更复杂的公共方法)。
但是,我似乎无法访问私有方法。
我该怎么做呢?
谢谢!
这是一种解决方案,不需要环境黑客攻击或更改您要测试的类,而是创建一个新类为您进行测试。
在中R6
,派生类可以访问private
其基类的Methods(与inC++
或Java
在其中需要使用protected
关键字来归档相同结果的方法不同)。因此,您可以编写一个TesterClass
从您要测试的类派生的。例如:
ClassToTest <- R6::R6Class(
private = list(
privateMember = 7,
privateFunction = function(x) {
return(x * private$privateMember)
}
)
)
TesterClass <- R6::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
这种方法的优点之一是可以将详细的测试结果保存在TesterClass
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句