You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R testthat测试S3类API返回对象出现produced no output报错的原因

报错原因

  • 核心问题是你误用了testthat的断言函数:expect_output()的校验对象是代码运行时打印到控制台的文本输出,而非代码返回的对象本身的值。
  • testthat的测试执行环境默认不会自动打印代码的返回结果,因此head(test_object$data)执行后没有输出到控制台的内容,触发了“无输出”的报错。

修复方案

你需要用校验对象值相等的expect_equal()替代expect_output(),修改后的测试代码如下:

test_that("Output is correct", {
  correct_df <- data.frame("index" = c(1:6), 
                           "time" = c("2010-06-13T16:42Z", "2010-07-30T16:08Z", "2010-08-01T08:10Z",
                                      "2010-08-01T10:20Z", "2010-08-01T11:20Z", "2010-08-01T17:00Z"),
                           "speed" = c(500, 750, 760, 1800, 1300, 550),
                           "type" = c("C", "C", "C", "O", "O", "C"),
                           stringsAsFactors = FALSE) # 建议添加该参数避免因子类型不匹配
  expect_equal(head(test_object$data), correct_df)
})

如果测试时因为行名、数据类型等非核心属性不一致报错,可以给expect_equal()添加ignore_attr = TRUE参数跳过非核心属性校验:

expect_equal(head(test_object$data), correct_df, ignore_attr = TRUE)

内容的提问来源于stack exchange,提问作者OLGJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:36:03