检查是否在另一个函数内调用了函数

时间:2017-08-21 13:54:11

标签: r unit-testing

假设我有功能

mean_wrapper <- function(x) {
  mean(x)
}

如何检查mean函数是否被调用?

例如,如果我想在单元测试中检查此行为,则使用用例。

修改

我做了另一个例子来更清楚。让我们考虑一下这个功能:

library(readr)
library(magrittr)

read_data <- function(file_name) {
  read_csv(file_name) %>%
    validate_data()
}

read_data的目的是阅读CVS文件并对其进行验证。 validate_data对数据执行一些检查。如果其中一个失败,则会引发错误,否则返回输入对象。

我想测试这两个功能但我不希望复制我在validate_data的情况下为read_data编写的相同测试。无论如何,我必须检查后一个函数是否已在read_data中调用,所以我喜欢写一个测试来为我做这个。

1 个答案:

答案 0 :(得分:1)

您可以追踪mean

trace(mean, tracer = quote(message("mean was called")))
mean_wrapper(3)
#Tracing mean(x) on entry 
#mean was called
#[1] 3
untrace(mean)
#Untracing function "mean" in package "base"

您可以使用任何内容(例如,将封闭环境中的变量赋值)作为跟踪器,而不是消息。