在R中的R6类中测试私有方法

霍尔格·霍夫林

我目前在一个项目中使用R6类。

我想编写单元测试,以测试我正在使用的私有方法的功能(最好不要通过使用这些私有方法的更复杂的公共方法)。

但是,我似乎无法访问私有方法。

我该怎么做呢?

谢谢!

克里娅·格里高(Cillia Gregor)

这是一种解决方案,不需要环境黑客攻击或更改您要测试的类,而是创建一个新类为您进行测试。

在中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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中的R6类中测试私有方法

来自分类Dev

R6类中的静态方法

来自分类Dev

在Groovy中测试私有方法

来自分类Dev

从 R6 中的其他私有值创建私有值

来自分类Dev

更改R6类的子类中的Initialize方法

来自分类Dev

如何在es6类中声明私有变量和私有方法

来自分类Dev

rspec在需要存根的私有方法中测试私有方法

来自分类Dev

在正在测试的同一类中模拟私有方法

来自分类Dev

为什么我可以在单元测试类中访问私有方法

来自分类Dev

如何在Rust中测试私有方法?

来自分类Dev

对类别中的私有方法进行单元测试?

来自分类Dev

在Akka中对私有方法进行单元测试

来自分类Dev

使用Powermockito在Java中测试私有方法

来自分类Dev

在单元测试中访问实例的私有方法

来自分类Dev

如何使用Traceur在ES6类中实现私有方法

来自分类Dev

在 R 包中包含 R6 类对象

来自分类Dev

在Swift中访问父类的私有方法

来自分类Dev

最新Chrome中的类私有方法

来自分类Dev

在(非)静态类中重写私有方法

来自分类Dev

在Swift中访问父类的私有方法

来自分类Dev

在导入的类中调用私有方法

来自分类Dev

具有许多私有方法的Java测试类

来自分类Dev

R6类内部定义:“未找到对象”(或:如何在R6类中定义“本地”对象)

来自分类Dev

使用JMockit模拟正在测试的类的私有方法

来自分类Dev

如何对Mockito测试的类的私有方法进行存根

来自分类Dev

私有方法与C ++中的Lambda

来自分类Dev

在JMockit中验证私有方法

来自分类Dev

Doctest Python中的私有方法

来自分类Dev

Java继承中的私有方法