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

Ballerina测试中assertExactEquals断言错误对象未按预期工作

Ballerina中assertExactEquals匹配错误对象失败的解决办法

你遇到的问题核心是:Ballerina的assertExactEquals是严格引用相等校验,哪怕两个错误的文本内容完全一致,它们也是独立创建的不同实例,引用地址不同,因此断言失败。

解决办法

有两种常用的处理方式:

  • 改用test:assertEquals做值相等校验:这个函数会对比错误的消息、类型等核心属性,而非引用地址
  • 提取错误属性单独校验:如果需要更细粒度的验证,可以分别检查错误的消息、错误类型等字段

修改后的测试代码示例

@test:Config {}
function testErrorFunction() {
    // 方案1:使用assertEquals做值比较
    test:assertEquals(testError(), error("Error occurred"));

    // 方案2:细粒度校验错误属性
    error? returnedErr = testError();
    test:assertExists(returnedErr);
    test:assertEquals(returnedErr.message(), "Error occurred");
    // 若有自定义错误类型,还可校验类型:test:assertEquals(returnedErr.type(), errorType);
}

补充说明

每次调用error("Error occurred")都会生成一个全新的error对象,内存中的引用完全不同。assertExactEquals仅当两个变量指向同一个对象实例时才会通过,因此不适合用来比较内容相同但实例不同的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:22:10