如何在Ballerina中断言错误值?自定义错误类型测试实现
自定义错误类型的断言测试实现(Ballerin)
针对你定义的Error和ErrorDetails类型,可以借助Ballerin的测试框架编写断言逻辑,核心是使用test:assertError()函数匹配错误的类型与细节。
步骤与示例代码
首先修正你定义中severity的拼写错误(MEDUIM应为MEDIUM),确保类型合法:
type ErrorDetails record {| string message; string reason; "HIGH"|"MEDIUM"|"LOW" severity; int code; record {} other?; |}; type Error error<ErrorDetails>;
1. 编写抛出错误的示例函数
先定义一个会抛出目标错误的函数,用于测试触发:
function throwCustomError() returns error? { ErrorDetails errDetails = { message: "请求参数无效", reason: "缺少必填字段user_id", severity: "MEDIUM", code: 400, other: {field: "extra debug info"} }; return error(errDetails); }
2. 编写测试函数
导入测试模块后,编写测试用例完成断言:
import ballerinax.test; @test:Config function testCustomErrorAssertion() { // 完全匹配错误细节的断言 test:assertError( throwCustomError(), test:ErrorAssertionConfig { errorType: Error, details: { message: "请求参数无效", reason: "缺少必填字段user_id", severity: "MEDIUM", code: 400, other: {field: "extra debug info"} } } ); // 部分字段匹配的断言(仅校验核心字段) test:assertError( throwCustomError(), test:ErrorAssertionConfig { errorType: Error, details: test:partialEquals({ severity: "MEDIUM", code: 400 }) } ); }
关键说明
test:assertError()会捕获目标函数抛出的错误,同时校验错误类型与细节是否匹配。- 使用
test:partialEquals()可以只断言你关心的核心字段,忽略非必要字段(比如可选的other)。 - 若
other字段有特定内容,也可在断言的details中加入对应结构完成匹配。
内容的提问来源于stack exchange,提问作者Lakshan Weerasinghe
相关产品推荐
相关产品推荐

