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

CircleCI自定义Orb中BATS测试助手无法加载的问题求助

问题解决:CircleCI中BATS测试无法加载test_helper

问题背景

自定义CircleCI Orb,使用bats orb对Shell脚本进行测试,按照bats-core官方教程引入测试助手,但执行测试时出现文件找不到的错误。

任务配置

- bats/run:
      formatter: junit
      path: ./src/tests
      timing: true

测试代码(src/tests/utils.bats)

#!/usr/bin/env bats

setup() {
    load "test_helper/bats-assert/load"
    
    source "./src/scripts/utils.sh"
}

# 1 Should load file when
@test "1.1: config file given, required tag missing " {
    mkdir -p "/home/circleci/"
    touch "/home/circleci/.test.utils.config "
    config_file="/home/circleci/.test.utils.config"

    echo "NEW_PARAMETER=value" > $config_file

    SourceParameters "${config_file}"

    assert_equal "${NEW_PARAMETER}" "value" # Check for no exit error
}

报错信息

load: 无法加载 test_helper/bats-assert/load:找不到该文件或目录

解决方案

1. 安装bats-assert测试助手

CircleCI的bats orb默认不包含bats-assert这类扩展库,需要手动安装到测试目录的test_helper路径下。在bats测试任务前添加安装步骤:

- run:
    name: 安装BATS测试助手
    command: |
      # 创建test_helper目录(如果不存在)
      mkdir -p ./src/tests/test_helper
      # 克隆bats-assert到指定路径
      git clone https://github.com/bats-core/bats-assert.git ./src/tests/test_helper/bats-assert

2. 验证路径正确性

确保test_helper/bats-assert/load.bash文件存在于src/tests目录下——BATS的load命令默认从测试文件所在目录的test_helper路径查找文件,也可通过设置BATS_TEST_HELPERS环境变量指定自定义路径。

如果习惯用子模块管理依赖,也可以将bats-assert添加为git子模块:

git submodule add https://github.com/bats-core/bats-assert.git src/tests/test_helper/bats-assert

完成上述操作后重新运行CircleCI任务,即可正常加载测试助手并执行断言逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:45:31